• 在NetCore下的Redis利器CSRedis


      大家在项目中现在用到缓存Redis应该是很常见的事情,之前我们都是使用的StackExchange.Redis。无意中随便浏览了一篇帖子.net core 2.0 redis驱动性能比拼,发现还有两个更短小强悍的组建:CSRedis 和NewLife.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)!它的描述是:CSRedis 是 redis.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")}");
            }    

    运行结果如下:

  • 相关阅读:
    Linux中创建Daemon进程的三种方法【转】
    Linux 内核定时器使用 二 高精度定时器 hrtimer 的用例【转】
    使用 Qemu 虚拟 ARM64 平台演示 kdump 崩溃转存【转】
    自旋锁 spin_lock、 spin_lock_irq 以及 spin_lock_irqsave 的区别【转】
    Linux中的spinlock机制[四]
    Linux中的虚拟内存机制和内存映射【转】
    那些情况该使用它们spin_lock到spin_lock_irqsave【转】
    Linux内核中的软中断、tasklet和工作队列详解【转】
    Linux 读写memory操作,devmem直接访问物理内存地址【转】
    Linux性能之DVFS/cpufreq【转】
  • 原文地址:https://www.cnblogs.com/kokyu02/p/12550259.html
Copyright © 2020-2023  润新知