首页 > 数据库 >.NET Redis客户端SimpleRedis的使用

.NET Redis客户端SimpleRedis的使用

时间:2022-12-19 22:35:06浏览次数:80  
标签:redisCacheManager Redis redis queue test new SimpleRedis newLifeRedis NET

一、项目说明

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

标签:redisCacheManager,Redis,redis,queue,test,new,SimpleRedis,newLifeRedis,NET
From: https://www.cnblogs.com/huguodong/p/16992420.html

相关文章

  • Kubernetes(k8s) kubectl certificate常用命令
    kubectl在$HOME/.kube目录中查找一个名为config的配置文件。可以通过设置KUBECONFIG环境变量或设置--kubeconfig参数来指定其它kubeconfig文件。本文主要介绍K......
  • asp.net c#开发 微信派发现金红包/H5网页抢红包功能
    临近节日,公司里为了给广大老客户赠福利,以及来一波拉新活动:搞了一个营销活动,大概活动规则如下:1、老客户通过网页抢红包,中奖会派发微信支付的红包;2、新客户只要关注后就可以中......
  • mysql及redis环境部署时遇到的问题解决
    redis开启远程访问redis默认只允许本地访问,要使redis可以远程访问可以修改redis.conf打开redis.conf文件在NETWORK部分有说明解决办法:注释掉bind127.0.0.1可以使所有的ip访......
  • redission 依赖冲突
    问题背景项目打包后运行,报错如下:因在idea运行项目能正常启动,打包后java-jar运行报错。且看了历史提交记录,最近无人修改。因此怀疑是打包环境出了问题,clean、重装都没......
  • 记一次 .NET 某安全生产信息系统 CPU爆高分析
    一:背景1.讲故事今天是......
  • ASP.NET(C#) VS2010连接Oracle数据库
    数学基础是通信密码学原理关键,我建议大家找几个比较靠谱入门的机器学习或者人工智能学习平台,在此推荐一个我看过的小白人工智能入门教程,零基础教程,首先介绍个人环境:win7+V......
  • Kubernetes分布式架构分析
     一个Kubernetes平台可以管理几百台容器主机,以及运行在这些主机上的容器应用。如果容器主机采用裸金属服务器,则一台容器主机上运行的容器应用可以超过200个。也就是说,一......
  • Kubernetes 集群搭建
    环境和版本CentOS:7.6kubelet:1.20.5kubeadm:1.20.5kubectl:1.20.5master节点:腾讯云服务器为2C2G,公网IP:xxx.xxx.xx.xxxnode1节点:华为云(不建议)服务器为2核4GB,公......
  • 基于.NetCore开发博客项目 StarBlog - (23) 文章列表接口分页、过滤、搜索、排序
    前言上一篇留的坑,火速补上。在之前的第6篇中,已经有初步介绍,本文做一些补充,已经搞定这部分的同学可以快速跳过,基于.NetCore开发博客项目StarBlog-(6)页面开发之博客文......
  • iis netcore 设置跨域后 httpDelete 不起作用
    web.configxml<system.webServer><modulesrunAllManagedModulesForAllRequests="false"><removename="WebDAVModule"/></modules></system.webServer>......