.net Redis客户端NewLife.Redis.Core库的使用
2023-03-31 11:00:16 时间
一、项目说明
NewLife.Redis.Core基于新生命团队NewLife.Redis的封装,支持.NETCore3/.NET6/7。
NewLife.Redis 是一个Redis客户端组件,以高性能处理大数据实时计算为目标。
源码: https://github.com/NewLifeX/NewLife.Redis
Nuget:NewLife.Redis
教程:https://newlifex.com/core/redis
二、使用说明
2.1 通过New的方式安装使用
2.1.1 单客户端模式
using NewLife.Redis.Core;
NewLifeRedis redis = new NewLifeRedis("server=127.0.0.1:6379;password=Shiny123456;db=4");
//普通操作
redis.Set("test", "1");
Console.WriteLine(redis.Get<string>("test"));
//列表
redis.ListAdd("listtest", 1);
redis.ListGetAll<string>("listtest");
//SortedSet
redis.SortedSetAdd("sortsettest", "1", 1.0);
redis.SortedSetIncrement("sortsettest", "1", 1.0);
//set
redis.SetAdd("settest", "2");
//哈希
redis.HashAdd("hashtest", "1", "2");
redis.HashGet<string>("hashtest", new string[] { "1" });
//队列操作
//方式1
var queue = redis.GetRedisQueue<string>("queue");
queue.Add("test");
var data = queue.Take(1);
//方式2
redis.AddQueue("queue", "1");
redis.GetQueueOne<string>("queue");
2.1.2 多客户端模式
var redisCacheManager = new RedisCacheManager(new List<RedisConfig> { new RedisConfig { Name = "1", ConnectionString = "xxx" } });
redisCacheManager.AddRedis(new RedisConfig { Name = "2", ConnectionString = "xx" });
//支持动态添加和删除
redisCacheManager.AddRedis(new RedisConfig { Name = "test", ConnectionString = "xx" });
redisCacheManager.RemoveRedis("test");
var redis = redisCacheManager.GetRedis("2");
//普通操作
redis.Set("test", "1");
Console.WriteLine(redis.Get<string>("test"));
//列表
redis.ListAdd("listtest", 1);
redis.ListGetAll<string>("listtest");
//SortedSet
redis.SortedSetAdd("sortsettest", "1", 1.0);
redis.SortedSetIncrement("sortsettest", "1", 1.0);
//set
redis.SetAdd("settest", "2");
//哈希
redis.HashAdd("hashtest", "1", "2");
redis.HashGet<string>("hashtest", new string[] { "1" });
//队列操作
//方式1
var queue = redis.GetRedisQueue<string>("queue");
queue.Add("test");
var data = queue.Take(1);
//方式2
redis.AddQueue("queue", "1");
redis.GetQueueOne<string>("queue");
2.2 通过IOC注入(推荐)
2.2.1 单客户端注入
ConfigureServices里注册组件
//默认读取配置文件:ConnectionStrings:Redis
services.AddNewLifeRedis();
//指定链接字符串
services.AddNewLifeRedis("server=127.0.0.1:6379;password=xxx;db=4");
构造函数里注入INewLifeRedis
private readonly INewLifeRedis newLifeRedis;
public Worker(ILogger<Worker> logger, INewLifeRedis newLifeRedis)
{
_logger = logger;
this.newLifeRedis = newLifeRedis;
newLifeRedis.Set("test", "2");
}
2.2.2 多客户端注入
配置文件不能再是字符串格式而要改成下面格式
"ConnectionStrings": {
"Redis": [
{
"Name": "1",
"ConnectionString": "server=127.0.0.1:6379;password=123456;db=4"
},
{
"Name": "2",
"ConnectionString": "server=127.0.0.1:6379;password=123456;db=5"
}
]
},
ConfigureServices里注册组件
services.AddRedisCacheManager();
services.AddRedisCacheManager(hostContext.Configuration, "xxx");//第二种
构造函数里注入IRedisCacheManager
private readonly ISimpleRedis newLifeRedis;
public Worker(ILogger<Worker> logger, IRedisCacheManager redisCacheManager)
{
_logger = logger;
newLifeRedis = redisCacheManager.GetRedis("1");
newLifeRedis.Set("TEST", "test");
newLifeRedis = redisCacheManager.GetRedis("2");
newLifeRedis.Set("TEST", "test");
//支持动态添加和删除
redisCacheManager.AddRedis(new RedisConfig { Name = "test", ConnectionString = "xx" });
redisCacheManager.RemoveRedis("test");
}
三、实现消息队列
详情可以看我的这篇文章:.Net大杀器之基于Newlife.Redis的可重复消费+共享订阅队列来替换第三方MQ
四、源码地址
相关文章
- 文言文编程还不够好玩?这里有个16岁高中生开发的粤语编程项目
- GitHub 机密扫描现在支持 PyPI 和 RubyGems
- 用Go语言编写一门工具的终极指南
- 性能优化:关于缓存的一些思考
- 一个著名的日志系统是怎么设计出来的?
- PHP代码简洁之道——SOLID原则
- 小小的单例模式竟然有这么多种写法?
- 机器学习算法一览
- 令人抓狂的代码 - 万能正则表达式.*陷阱
- gRPC入门指南之简单RPC
- 用定租问题学透K近邻算法
- 我是如何把性能优化的颗粒度做的更细
- 鸿蒙轻内核M核源码分析系列十四 软件定时器Swtmr
- 探讨Esbuild 为什么那么快
- 设计模式系列之策略模式
- PHP 源码探秘 - 为什么 trim 会导致乱码
- 态牛-Tech Neo 9月刊:基于算法的IT运维
- Shell逐行处理文本求和,我人傻了...
- 如何实现PHP长网址与短网址
- 用责任链模式实现 OA 系统中的涨薪流程审批