24

I am looking for a very simple starter C# application for using StackExchange.Redis I have search over the web and found StackExchange.Redis

But this doesn't seems like a quick startup example.

I have setup redis on windows using StackExchange.Redis exe

Can anyone help me locate a simple C# application connecting with redis server and setting and getting some keys.

2
  • Are you looking to use caching or state server? Commented Oct 1, 2015 at 13:23
  • Have you seen the readme? Commented Oct 1, 2015 at 14:14

3 Answers 3

35

You can find C# examples in the readme file.

using StackExchange.Redis;
...

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
// ^^^ store and re-use this!!!

IDatabase db = redis.GetDatabase();
string value = "abcdefg";
db.StringSet("mykey", value);
...
string value = db.StringGet("mykey");
Console.WriteLine(value); // writes: "abcdefg"
Sign up to request clarification or add additional context in comments.

3 Comments

I also recommend you the CachingFramework.Redis library that is built on top of SE.Redis and provides extra functionality like tagging mechanism, pluggable serialization and lot more.
This is a bad example - the redis object is long-lived and example doesn't capture that
@Abr you're right, so I've edited and added a comment to the code sample
8

See the following code from their github sample:

 using (var muxer = ConnectionMultiplexer.Connect("localhost,resolvedns=1"))
        {
            muxer.PreserveAsyncOrder = preserveOrder;
            RedisKey key = "MBOA";
            var conn = muxer.GetDatabase();
            muxer.Wait(conn.PingAsync());

            Action<Task> nonTrivial = delegate
            {
                Thread.SpinWait(5);
            };
            var watch = Stopwatch.StartNew();
            for (int i = 0; i <= AsyncOpsQty; i++)
            {
                var t = conn.StringSetAsync(key, i);
                if (withContinuation) t.ContinueWith(nonTrivial);
            }
            int val = (int)muxer.Wait(conn.StringGetAsync(key));
            watch.Stop();

            Console.WriteLine("After {0}: {1}", AsyncOpsQty, val);
            Console.WriteLine("({3}, {4})\r\n{2}: Time for {0} ops: {1}ms; ops/s: {5}", AsyncOpsQty, watch.ElapsedMilliseconds, Me(),
                withContinuation ? "with continuation" : "no continuation", preserveOrder ? "preserve order" : "any order",
                AsyncOpsQty / watch.Elapsed.TotalSeconds);
        }

6 Comments

Your link is 404 now... what is AsyncOpsQty?
This is a bad example because the Connection Multiplexer object is LONG LIVED! It should not be used in this way
Agreed. This is example was around 2015 when i have nearly first used it. Even the provided sample doesn't exists from which i have referred it .You are free to post a good example in the answer :)
You also forgot to increase minimum worker thread pool count.
|
3
  • //-- Install-Package StackExchange.Redis -Version 1.2.6
  • In this simple example: set new string key/value to redis with expiry time, get redis string value by key from redis:
  • Code:
    public string GetRedisValue()
    {
        var cachedKey = "key";
        string value;
    
        using (var redis = ConnectionMultiplexer.Connect("localhost:6379"))
        {
            IDatabase db = redis.GetDatabase();
    
            if (!db.KeyExists(cachedKey))
            {
                value = DateTime.Now.ToString();
                //set new value
                db.StringSet(cachedKey, value, TimeSpan.FromSeconds(18));
            }
            else
            {
                //get cached value
                value = db.StringGet(cachedKey);
            }
        }
    
        return value;
    }
    

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.