.NET Redis客戶端SimpleRedis的使用

一、項目說明

SimpleRedis基於新生命團隊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 SimpleRedis;
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

四、源碼地址

Github:https://github.com/NewLifeX/SimpleRedis

Gitee:https://gitee.com/huguodong520/SimpleRedis.git

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章