Reputation: 2485
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.
Upvotes: 24
Views: 51139
Reputation: 41
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;
}
Upvotes: 3
Reputation: 13114
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"
Upvotes: 35
Reputation: 4124
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);
}
Upvotes: 8