在NetCore下的Redis利器CSRedis

大家在项目中现在用到缓存Redis应该是很常见的事情,之前我们都是使用的StackExchange.Redis。无意中随便浏览了一篇帖子**.net core 2.0 redis驱动性能比拼**,发现还有两个更短小强悍的组建:CSRedisNewLife.Redis,其实还有如ServiceStack.Redis

  • ServiceStack.Redis :是商业版,免费版有限制;
  • StackExchange.Redis :是免费版,早期有Timeout Bug,当前版本使用需要全部使用异步方法方可解决;
  • NewLife.Redis:免费版,这个是中通大数据实时计算中广泛应用,好像也很不错。

首先我们看一下官网https://redis.io/,有官方推荐的一下操作组建:
在这里插入图片描述
例如:缓存数据达到500G,如果使用一台redis-server服务器光靠内存存储将非常吃力,使用硬盘又影响性能。 可以使用此功能自动管理N台redis-server服务器分担存储,每台服务器只需约 (500/N)G 内存,且每台服务器匀可以配置官方高可用架构。

打了星号的就是官方比较推荐的,但我们今天还是要试试CSRedis ,看一下是不是后面项目用的上。

基本功能

CSRedisClient使用就是实例化一个CSRedisClient对象然后初始化一下RedisHelper就可以了,所有的方法名和redis-cli都保持一致。基本就跟使用redis-cli命令一样操作它。

功能介绍

1、获取Nuget包(目前版本3.5.1)!它的描述是:CSRedisredis.io 官方推荐库,支持 redis-trib集群、哨兵、私有分区与连接池管理技术,简易 RedisHelper 静态类。

nuget Install-Package CSRedisCore

2、四种模式的介绍:普通模式,哨兵模式,集群模式,分区模式

普通模式

var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=123,defaultDatabase=13,prefix=key前辍");

参数说明
在这里插入图片描述

哨兵模式

var csredis = new CSRedis.CSRedisClient(
    "mymaster,password=123,prefix=key前辍", 
    new [] { "192.169.1.10:26379", "192.169.1.11:26379", "192.169.1.12:26379" });

连接字符串中的 mymaster 是哨兵监听的名称,其他配置参数与普通模式一致

只读模式:new CSRedisClient("mymaster,password=123", new []{哨兵}, false)

集群模式

假设你已经配置好 redis-trib 集群,定义一个【普通模式】的 CSRedisClient 对象,它会根据 redis-server 返回的 MOVED | ASK 错误记录slot,自动增加节点 Nodes 属性。

分区模式

本功能实现多个服务节点分担存储(作者自己实现的一种方式),与官方的分区、集群、高可用方案不同。

例如:缓存数据达到500G,如果使用一台redis-server服务器光靠内存存储将非常吃力,使用硬盘又影响性能。 可以使用此功能自动管理N台redis-server服务器分担存储,每台服务器只需约 (500/N)G 内存,且每台服务器匀可以配置官方高可用架构。

实例

我先简单的用普通模式,进行一个实例使用的玩一下:

private static CSRedisClient csredis;
static void Main(string[] args)
{
    csredis = new CSRedisClient("127.0.0.1:6379,defaultDatabase=1,poolsize=50,ssl=false,writeBuffer=10240");
    RedisHelper.Initialization(csredis);
    Test();
    Console.ReadKey();
}

static void Test()
{

    csredis.Set("name", "Blake");//设置值。默认永不过期
    Console.WriteLine(RedisHelper.Get<String>("name"));
    RedisHelper.SetAsync("fullname", "BlakeYu");//异步操作
    Console.WriteLine(RedisHelper.Get<String>("fullname"));

    csredis.Set("time", DateTime.Now, 1);
    Console.WriteLine(RedisHelper.Get<DateTime>("time"));
    Thread.Sleep(1100);
    Console.WriteLine(RedisHelper.Get<DateTime>("time"));

    // 列表
    csredis.RPush("list", "第一个元素");
    csredis.RPush("list", "第二个元素");
    csredis.LInsertBefore("list", "第二个元素", "我是新插入的第二个元素!");
    Console.WriteLine($"list的长度为:{csredis.LLen("list")}");
    Console.WriteLine($"list的第二个元素为:{csredis.LIndex("list", 1)}");

    // 哈希
    csredis.HSet("person", "name", "张三");
    csredis.HSet("person", "sex", "男");
    csredis.HSet("person", "age", "28");
    csredis.HSet("person", "adress", "wuhan");
    Console.WriteLine($"person这个哈希中的age为:{csredis.HGet<int>("person", "age")}");


    // 集合
    csredis.SAdd("students", "张三", "李四");
    csredis.SAdd("students", "王五");
    csredis.SAdd("students", "赵妞");
    Console.WriteLine($"students这个集合的大小为:{csredis.SCard("students")}个");
    Console.WriteLine($"students这个集合是否包含wagnwu:{csredis.SIsMember("students", "wangwu")}");
}    

运行结果如下:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NetCore是一个开源的、跨平台的、用于构建现代化的互联网应用程序的框架。它具有高性能、高可扩展性和易用性的特点,被广泛应用于Web应用、移动应用和微服务等领域。 RabbitMQ是一个可靠的消息队列系统,它基于开放的AMQP协议,通过提供可靠的消息传递机制,实现了应用程序的解耦和面向服务的架构。RabbitMQ支持广泛的编程语言,并具有安全可靠、高性能的特点,使得它成为构建分布式系统和微服务架构的重要组件。 MongoDB是一个开源的、面向文档的NoSQL数据库。与传统的关系型数据库不同,MongoDB使用了类似JSON的BSON格式来存储数据,支持嵌套文档、动态模式和高度的可伸缩性,具有优异的读写性能和水平扩展能力。它广泛应用于大数据、实时分析和实时存储等场景,成为现代化应用开发中的重要选择。 Redis是一个高性能的键值存储数据库系统,它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。Redis实现了内存存储和快速持久化,具有极高的读写性能和响应速度,被广泛应用于缓存、消息队列、会话存储等场景。它还支持发布/订阅和事务等功能,为构建实时应用和并发系统提供了很好的支持。 综上所述,NetCore、RabbitMQ、MongoDB和Redis都是构建现代化应用程序的重要工具和组件。NetCore作为一个灵活、高性能的应用框架,可以与RabbitMQ、MongoDB和Redis等系统集成,实现分布式架构和高性能的数据存储和处理。通过使用这些组件,开发者可以构建高可扩展、可靠性强、性能优越的Web应用、分布式系统和大数据应用等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值