.NET 8 中使用CSRedisCore 操作Redis详解
前言:
.Net中操作Redis的库有几个比较经典的,如ServiceStack.Redis
,StackExchange.Redis
,但是都有各自的缺点
ServiceStack.Redis
是商业版,免费版有限制;
StackExchange.Redis
是免费版,早期有Timeout
的 Bug
,当前版本使用需要全部使用异步方法方可解决;
所以都不推荐使用了,目前比较好用的是 CSRedisCore
这个库,优点很多,如
1、CSRedisClient和RedisHelper保持所有方法名与redis-cli一致
2、支持geo类型命令(需要redis-server 3.2或更高版本)
3、支持Redis集群redis-trib.rb
4、支持Redis哨兵和主从
5、支持流类型命令(需要redis-server 5.0及更高版本)
6、反序列对象获取,如:Get<byte[]>、HGet<byte[]>,所以获取方法都重载了
7、SafeObjectPool 的引入使用;
等等。。。
目前官方有2个库分别是
(1).CSRedisCore
:主库,实现对接 redis
各种功能
(2).Caching.CSRedis
:分布式缓存 CSRedisCore
实现 Microsoft.Extensions.Caching
下面就具体介绍一下CSRedisCore
在.Net WebApi
项目中常用的方式:
在NuGet程序包中直接搜索安装
使用方式上就有2中形式:
用法1、CSRedisClient实例化的对象
var rds = new CSRedis.CSRedisClient("127.0.0.1:6379,password=YourPassword");
services.AddSingleton(rds); //注册成全局单例
用法2-RedisHelper帮助类
var rds = new CSRedis.CSRedisClient("127.0.0.1:6379,password=YourPassword");//如果你没有给redis设置密码,那么直接写上ip就行"127.0.0.1:6379"
RedisHelper.Initialization(rds);
关于连接字符串的介绍,有需要的时候可以自己加入
参数名 | 默认值 | 说明 |
---|---|---|
password | <空> | 密码 |
defaultDatabase | 0 | 默认数据库 |
poolsize | 50 | 连接池大小 |
connectTimeout | 5000 | 连接超时设置(毫秒) |
syncTimeout | 10000 | 发送/接收超时设置(毫秒) |
idleTimeout | 0 | 连接池内元素空闲时间(毫秒),适用连接远程redis-server |
preheat | true | 预热连接 |
ssl | false | 是否开启加密传输 |
writeBuffer | 10240 | 异步方法写入缓冲区大小(字节) |
tryit | 0 | 执行命令出错,尝试重试的次数 |
name | <空> | 连接名称,可以使用 Client List 命令查看 |
prefix | <空> | key前辍,所有方法都会附带此前辍,csredis.Set(prefix + “key”, 111); |
以上两种都可以,我自己比较常用第二种静态帮助类的方式,到处都可以直接用,比较方便,下面介绍常用的方法
1、存取操作
RedisHelper.Set("test1", "123123", 60);
RedisHelper.Get("test1");
2、发布订阅
//发布
RedisHelper.Publish("chan1", "123123123");
//订阅
RedisHelper.Subscribe(
("chan1", msg => Console.WriteLine(msg.Body)),
("chan2", msg => Console.WriteLine(msg.Body))
);
先介绍这两种比较常用的操作,后续用到其它的会继续更新。。。