var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379, defaultDatabase = 0, poolsize = 500, ssl = false, writeBuffer = 10240");
RedisHelper.Initialization(csredis);
csredis.Set("hello", "1");
csredis.Set("world", "2");
csredis.Set("hello", "3");
csredis.Get("hello");
csredis.Del("world");
csredis.Set("num-key", "24");
csredis.IncrBy("num-key",5);
csredis.IncrBy("num-key", -10);
csredis.Set("string-key", "hello ");
csredis.Append("string-key", "world");
csredis.GetRange("string-key",3,7)
csredis.SetRange("string-key", 4, "aa");
csredis.RPush("my-list", "item1", "item2", "item3", "item4");
csredis.RPop("my-list");
csredis.LPush("my-list","LeftPushItem");
csredis.LPop("my-list");
foreach (var item in csredis.LRange("my-list", 0, -1))
{
Console.WriteLine(item);
}
Console.WriteLine($"{csredis.LIndex("my-list", 1)}");
csredis.LTrim("my-list", 4, 10);
csredis.RPopLPush("my-list", "another-list");
csredis.SAdd("my-set", "item1", "item1", "item2");
foreach (var member in csredis.SMembers("my-set"))
{
Console.WriteLine($"集合成员:{member.ToString()}");
}
string member = "item1";
Console.WriteLine($"{member}是否存在:{csredis.SIsMember("my-set", member)}");
csredis.SRem("my-set", member);
Console.WriteLine($"{member}是否存在:{csredis.SIsMember("my-set", member)}");
csredis.SPop("my-set");
csredis.SAdd("set-a", "item1", "item2", "item3","item4","item5");
csredis.SAdd("set-b", "item2", "item5", "item6", "item7");
csredis.SDiff("set-a", "set-b");
csredis.SInter("set-a", "set-b");
csredis.SUnion("set-a", "set-b");
csredis.HSet("ArticleID:10001", "Title", "了解简单的Redis数据结构");
csredis.HSet("ArticleID:10001", "Author", "xscape");
csredis.HSet("ArticleID:10001", "PublishTime", "2019-01-01");
csredis.HGet("ArticleID:10001", "Title");
foreach (var item in csredis.HGetAll("ArticleID:10001"))
{
Console.WriteLine(item.Value);
}
var keys = new string[] { "Title","Author","publishTime"};
csredis.HMGet("ID:10001", keys);
csredis.HSet("ArticleID:10001", "votes", "257");
csredis.HIncrBy("ID:10001", "votes", 40);
csredis.ZAdd("Quiz", (79, "Math"));
csredis.ZAdd("Quiz", (98, "English"));
csredis.ZAdd("Quiz", (87, "Algorithm"));
csredis.ZAdd("Quiz", (84, "Database"));
csredis.ZAdd("Quiz", (59, "Operation System"));
csredis.ZCard("Quiz");
csredis.ZRangeByScore("Quiz",90,100);
csredis.ZRangeWithScores("Quiz", 0, -1);
csredis.ZRem("Quiz", "Math");
redis.Set("MyKey", "hello,world");
Console.WriteLine(redis.Get("MyKey"));
redis.Expire("MyKey", 5);
Thread.Sleep(6000);
Console.WriteLine(redis.Get("MyKey"));
3.高级玩法:发布订阅
复制代码
rds.Subscribe(
("chan1", msg => Console.WriteLine(msg.Body)),
("chan2", msg => Console.WriteLine(msg.Body)));
rds.PSubscribe(new[] { "test*", "*test001", "test*002" }, msg => {
Console.WriteLine($"PSUB {msg.MessageId}:{msg.Body} {msg.Pattern}: chan:{msg.Channel}");
});
rds.Publish("chan1", "123123123");
复制代码
4.高级玩法:缓存壳
复制代码
var t1 = Test.Select.WhereId(1).ToOne();
var cacheValue = rds.Get("test1");
if (!string.IsNullOrEmpty(cacheValue)) {
try {
return JsonConvert.DeserializeObject(cacheValue);
} catch {
rds.Remove("test1");
throw;
}
}
var t1 = Test.Select.WhereId(1).ToOne();
rds.Set("test1", JsonConvert.SerializeObject(t1), 10);
var t1 = rds.CacheShell("test1", 10, () => Test.Select.WhereId(1).ToOne());
var t2 = rds.CacheShell("test", "1", 10, () => Test.Select.WhereId(1).ToOne());
var t3 = rds.CacheShell("test", new [] { "1", "2" }, 10, notCacheFields => new [] {
("1", Test.Select.WhereId(1).ToOne()),
("2", Test.Select.WhereId(2).ToOne())
});
复制代码
5.高级玩法:管道
使用管道模式,打包多条命令一起执行,从而提高性能。
var ret1 = rds.StartPipe().Set("a", "1").Get("a").EndPipe();
var ret2 = rds.StartPipe(p => p.Set("a", "1").Get("a"));
var ret3 = rds.StartPipe().Get("b").Get("a").Get("a").EndPipe();
6.高级玩法:多数据库
var connectionString = "127.0.0.1:6379,password=123,poolsize=10,ssl=false,writeBuffer=10240,prefix=key前辍";
var redis = new CSRedisClient[14];
for (var a = 0; a< redis.Length; a++) redis[a] = new CSRedisClient(connectionString + "; defualtDatabase=" + a);
redis[1].Get("test1");