CSReid库在NetCore工作场景中的使用
source link: https://my.oschina.net/u/3081398/blog/5037106
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
过去 .net 最有名望的 ServiceStack.Redis 早已沦为商业用途,在 .NETCore 中使用只能充值。后来居上的 StackExchange.Redis 虽然能用,但是之前出现的各种Timeout错误也是让人很无语,所以也不作为使用的首选。经过网上的一些整理和推荐,发现了一款开源库CSReidsCore。
CSRedisCore是国人开源的一套Redis操作库,现在最新版本已经V3.6.5,经过几个实际公司项目的使用情况来看,还没有出现什么大的问题,本文主要介绍一下在使用这个库的过程中的一些自己的想法。
- CSRedisClient和RedisHelper保持所有方法名称与redis-cli一致
- 支持地理类型命令(需要redis-server 3.2或更高版本)
- 支持Redis集群redis-trib.rb
- 支持Redis Sentinel和主从
- 支持流类型命令(需要redis-server 5.0及更高版本)
Redis单机
Redis唯一Db使用
根据Github作者推荐,如果你是唯一DB的使用场景,推荐使用这种方式初始化和使用
使用RedisHelper初始化和调用,是唯一Db下的推荐方式
var rds = new CSRedis.CSRedisClient("127.0.0.1:6379,password=123,defaultDatabase=0,poolsize=50,ssl=false,writeBuffer=10240");
RedisHelper.Initialization(rds);
//使用RedisHelper
RedisHelper.Set("test", DateTime.Now.ToString());
RedisHelper.Get("test");
Redis多个Db使用
实例数组作为单例注入
推荐方式:
将实例后的各个RedisDb整合在数组中,单例截注入services
var connectionString = "127.0.0.1:6379,password=123,poolsize=10";
var redis = new CSRedisClient[14];
for (var a = 0; a < redis.Length; a++)
redis[a] = new CSRedisClient(connectionString + ",defaultDatabase=" + a);
service.AddSingleton(redis);
创建多个ReidsHepler
每一个库对应一个RedisHelper,初始化指定Helper的Client实例
public abstract class MyHelper1 : RedisHelper<MyHelper1> {}
public abstract class MyHelper2 : RedisHelper<MyHelper2> {}
MyHelper1.Initialization(new CSRedisClient("...."));
MyHelper2.Initialization(new CSRedisClient("...."));
Redis集群
var csredis = new CSRedis.CSRedisClient(null,
"127.0.0.1:6371,password=123,defaultDatabase=11,poolsize=10,ssl=false,writeBuffer=10240",
"127.0.0.1:6372,password=123,defaultDatabase=12,poolsize=11,ssl=false,writeBuffer=10240",
"127.0.0.1:6373,password=123,defaultDatabase=13,poolsize=12,ssl=false,writeBuffer=10240",
"127.0.0.1:6374,password=123,defaultDatabase=14,poolsize=13,ssl=false,writeBuffer=10240");
csredis.Set("test", DateTime.Now.ToString());
csredis.Get("test");
var csredis = new CSRedis.CSRedisClient("mymaster,password=123",
new[] { "192.169.1.10:26379", "192.169.1.11:26379", "192.169.1.12:26379" });
csredis.Set("test", DateTime.Now.ToString());
csredis.Get("test");
分布式缓存
基于CSRedisCore开源库的分布式缓存用法也很简单,大体的思路和上文一致只是方法体变了而已
var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=123,defaultDatabase=13,ssl=false,writeBuffer=10240,poolsize=50,prefix=key前辍");
services.AddSingleton<IDistributedCache>(new Microsoft.Extensions.Caching.Redis.CSRedisCache(csredis));
var csredis = new CSRedis.CSRedisClient(null,
"127.0.0.1:6371,password=123,defaultDatabase=11,poolsize=10,ssl=false,writeBuffer=10240,prefix=key前辍",
"127.0.0.1:6372,password=123,defaultDatabase=12,poolsize=11,ssl=false,writeBuffer=10240,prefix=key前辍",
"127.0.0.1:6373,password=123,defaultDatabase=13,poolsize=12,ssl=false,writeBuffer=10240,prefix=key前辍",
"127.0.0.1:6374,password=123,defaultDatabase=14,poolsize=13,ssl=false,writeBuffer=10240,prefix=key前辍");
services.AddSingleton<IDistributedCache>(new Microsoft.Extensions.Caching.Redis.CSRedisCache(csredis));
如果你存在多数据库切换的需求,可以参照”Redis多个Db使用“标签进行设置
CSRedis的高级用法可以参考这篇文章 .NETCore 简单且高级的库 csredis v3.0.0和Github官方库。一般情况使用不到,等到需要用到的时候再来回顾一下即可。
本文到此结束,希望对你有帮助 😃
如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
更多精彩技术文章汇总在我的 公众号【程序员工具集】,持续更新,欢迎关注订阅收藏。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK