• Redis 入门 - C#|.NET Core客户端库六种选择


    合集 - Redis 入门(5)

    1.Redis 入门 -简介09-042.Redis 入门 -安装最全讲解(Windows、Linux、Docker)09-073.Redis 入门 -图形化管理工具如何选择,最全分类09-084.Redis 入门 -五大基础类型及其指令学习09-11

    5.Redis 入门 -C#|.NET Core客户端库六种选择09-12

    收起

    经过前面的Redis基础学习,今天正式进入编码阶段了,进入编码阶段我们又同样面临一道多选题,选择什么客户端库?要是有选择困难症的又要头疼了。不过别担心我先头疼,今天就给大家介绍6款.NET系Redis客户端库: ServiceStack.Redis、StackExchange.Redis、CSRedisCore、FreeRedis、NewLife.Redis、BeetleX.Redis。

    01、ServiceStack.Redis

    ServiceStack.Redis算的上最老牌、最有名的一款Redis C#/.NET客户端库了,但是因为商业性导致对于大多数人来说不是首选。

    ServiceStack.Redis是一款功能丰富、操作简单、高性能的C#/.NET客户端库,对原生的功能和特性提供很好的支持,同时又做了更高级的功能抽象,使得对简单对象或复杂类型序列化操作更容易。当然也同时提供了同步和异步API。

    下面我们写个简单的使用小例子:

    1. public static void Run()
    2. {
    3. Console.WriteLine($"ServiceStack.Redis 使用示例");
    4. //创建连接池
    5. var pool = new RedisManagerPool("127.0.0.1:6379");
    6. //获取一个redis实例
    7. using var redis = pool.GetClient();
    8. //设置键值对
    9. var setResult = redis.Set("key1", "value1");
    10. Console.WriteLine($"设置键值对key1/value1操作结果:{setResult}");
    11. //获取键对应的值
    12. var value = redis.Get<string>("key1");
    13. Console.WriteLine($"获取键key1对应的值为:{value}");
    14. // 删除键
    15. var delResult = redis.Remove("key1");
    16. Console.WriteLine($"删除键key1操作结果:{delResult}");
    17. //检查键是否存在
    18. var exists = redis.ContainsKey("key1");
    19. Console.WriteLine($"键key1是否存在: {exists}");
    20. }

    执行结果如下:

    02、StackExchange.Redis

    StackExchange.Redis是一款基于.NET的、高性能的、免费的、功能全面的、通用的老牌Redis客户端。并且支持Redis多节点,Redis集群,IO多路复用,同步/异步双编程模型等技术,这也使得其与Redis交互同时兼具灵活性与高效性,大大提升了Redis读写的性能与并发。

    同时它还提供了丰富的高级功能,包括但不限于管道,连接池,事务,Lua脚本、订阅/发布等。序列化与压缩也提供了多种方式供以选择,很方便与.NET应用程序集成。

    下面我们写个简单的使用小例子:

    1. public static void Run()
    2. {
    3. Console.WriteLine($"StackExchange.Redis 使用示例");
    4. // 创建 ConnectionMultiplexer 实例
    5. using var connection = ConnectionMultiplexer.Connect("127.0.0.1:6379");
    6. //获取 Redis 数据库实例
    7. var redis = connection.GetDatabase();
    8. //设置键值对
    9. var setResult = redis.StringSet("key1", "value1");
    10. Console.WriteLine($"设置键值对key1/value1操作结果:{setResult}");
    11. //获取键对应的值
    12. var value = redis.StringGet("key1");
    13. Console.WriteLine($"获取键key1对应的值为:{value}");
    14. // 删除键
    15. var delResult = redis.KeyDelete("key1");
    16. Console.WriteLine($"删除键key1操作结果:{delResult}");
    17. //检查键是否存在
    18. var exists = redis.KeyExists("key1");
    19. Console.WriteLine($"键key1是否存在: {exists}");
    20. }

    执行结果如下:

    03、CSRedisCore

    CSRedisCore是一款国人基于开源项目csredis上实现的著名Redis C#/.NET客户端库。它做到了所有方法名和redis-cli方法名保持一致。它支持Redis 集群、Redis 哨兵和Redis主从分离,以及geo类型、流类型命令,同时支持同步/异步接口。

    下面我们写个简单的使用小例子:

    1. public static void Run()
    2. {
    3. Console.WriteLine($"CSRedisRedis 使用示例");
    4. // 创建 CSRedisClient 实例
    5. var redis = new CSRedisClient("127.0.0.1:6379");
    6. //设置键值对
    7. var setResult = redis.Set("key1", "value1");
    8. Console.WriteLine($"设置键值对key1/value1操作结果:{setResult}");
    9. //获取键对应的值
    10. var value = redis.Get("key1");
    11. Console.WriteLine($"获取键key1对应的值为:{value}");
    12. // 删除键
    13. var delResult = redis.Del("key1");
    14. Console.WriteLine($"删除键key1操作结果:{delResult}");
    15. //检查键是否存在
    16. var exists = redis.Exists("key1");
    17. Console.WriteLine($"键key1是否存在: {exists}");
    18. }

    执行结果如下:

    04、FreeRedis

    FreeRedis是CSRedisCore作者的另一个大作。至少从逻辑上来说也应该比CSRedisCore更优秀,事实也是如此,FreeRedis在内存使用、存储效率都做了优化,在持久化、容错方面也做了改进,同时还提供了更多的高级功能以及自定义选项。我们直接看官方介绍。

    单从介绍上来说CSRedisCore有的功能它有,CSRedisCore没有的功能它也有。总的来说功能更强大了。另外CSRedisCore目前处于维护阶段已经不新增功能了。因此更推荐FreeRedis。

    下面我们写个简单的使用小例子:

    1. public static void Run()
    2. {
    3. Console.WriteLine($"FreeRedis 使用示例");
    4. // 创建 CSRedisClient 实例
    5. var redis = new RedisClient("127.0.0.1:6379");
    6. //设置键值对
    7. redis.Set("key1", "value1");
    8. Console.WriteLine($"设置键值对key1/value1操作成功");
    9. //获取键对应的值
    10. var value = redis.Get("key1");
    11. Console.WriteLine($"获取键key1对应的值为:{value}");
    12. // 删除键
    13. var delResult = redis.Del("key1");
    14. Console.WriteLine($"删除键key1操作结果:{delResult}");
    15. //检查键是否存在
    16. var exists = redis.Exists("key1");
    17. Console.WriteLine($"键key1是否存在: {exists}");
    18. }

    执行结果如下:

    05、NewLife.Redis

    NewLife.Redis具有低延时,高性能,高吞吐量以及稳定性、可靠性良好,因此在大量实时数据计算的应用场景有很好的发挥。它为针对大数据和消息队列做了优化,使得其可以用支撑日均百亿级的调用量,而它的连接池可以做到100000个连接并发。在包含网络通讯的前提下可以把get/set操作做到平均耗时200~600微秒。其二进制序列化方式也更有助于提升数据存储和读取效率。

    下面我们写个简单的使用小例子:

    1. public static void Run()
    2. {
    3. Console.WriteLine($"NewLife.Redis 使用示例");
    4. // 创建 CSRedisClient 实例
    5. var redis = new FullRedis("127.0.0.1:6379", "", 0);
    6. //设置键值对
    7. var setResult = redis.Set("key1", "value1");
    8. Console.WriteLine($"设置键值对key1/value1操作结果:{setResult}");
    9. //获取键对应的值
    10. var value = redis.Get<string>("key1");
    11. Console.WriteLine($"获取键key1对应的值为:{value}");
    12. // 删除键
    13. var delResult = redis.Remove("key1");
    14. Console.WriteLine($"删除键key1操作结果:{delResult}");
    15. //检查键是否存在
    16. var exists = redis.ContainsKey("key1");
    17. Console.WriteLine($"键key1是否存在: {exists}");
    18. }

    执行结果如下:

    06、BeetleX.Redis。

    BeetleX.Redis是一款高可用、高性能、异步非阻塞设计的.net core客户端库。并且基本全面覆盖redis-cli指令,提供了多种序列化方式,使用简单轻松。

    下面我们写个简单的使用小例子:

    1. public static async Task RunAsync()
    2. {
    3. Console.WriteLine($"BeetleX.Redis 使用示例");
    4. // 创建 CSRedisClient 实例
    5. RedisDB redis = new RedisDB(0)
    6. {
    7. DataFormater = new JsonFormater()
    8. };
    9. //添加写主机
    10. redis.Host.AddWriteHost("127.0.0.1", 6379);
    11. //添加读主机
    12. redis.Host.AddReadHost("127.0.0.1", 6379);
    13. //设置键值对
    14. var setResult = await redis.Set("key1", "value1");
    15. Console.WriteLine($"设置键值对key1/value1操作结果:{setResult}");
    16. //获取键对应的值
    17. var value = await redis.Get<string>("key1");
    18. Console.WriteLine($"获取键key1对应的值为:{value}");
    19. // 删除键
    20. var delResult = await redis.Del("key1");
    21. Console.WriteLine($"删除键key1操作结果:{delResult}");
    22. //检查键是否存在
    23. var exists = await redis.Exists("key1");
    24. Console.WriteLine($"键key1是否存在: {exists}");
    25. }

    执行结果如下:

    07、总结

    • ServiceStack.Redis:综合功能全面,适合需要商业支持的用户。

    • StackExchange.Redis:官方推荐,功能全面,社区支持良好,文档丰富。

    • CSRedisCore:功能齐全,简单易用,适合快速开发。

    • FreeRedis:高性能,功能齐全,简单易用,适合快速开发。

    • NewLife.Redis:高性能,高并发,低延迟,分布式场景适合使用。

    • BeetleX.Redis。:高可用,高性能,异步操作,适合高负载场景。

      数据库(DB、DBMS、SQL)-CSDN博客  https://blog.csdn.net/b19839356939/article/details/142152771?spm=1000.2115.3001.6382&utm_medium=distribute.pc_feed_v2.none-task-blog-personrec_tag-18-142152771-null-null.329^v9^%E4%B8%AA%E6%8E%A8pc%E9%A6%96%E9%A1%B5%E6%8E%A8%E8%8D%90%E2%80%94%E6%A1%B63&depth_1-utm_source=distribute.pc_feed_v2.none-task-blog-personrec_tag-18-142152771-null-null.329^v9^%E4%B8%AA%E6%8E%A8pc%E9%A6%96%E9%A1%B5%E6%8E%A8%E8%8D%90%E2%80%94%E6%A1%B63

  • 相关阅读:
    【分圆多项式及理想、理想格】
    软件测试中bug修正后测试就结束了吗?
    [数据结构与算法] 线性表之单链表基本操作
    Django 密码管理:安全实践与技术深入
    LeetCode 31. 下一个排列
    update:将另一表里查询的数据,拼接赋值
    wget 下载盯盘文件
    TCP三次握手和四次挥手(彻底弄明白)
    【HDU No. 5057】序列操作 Argestes and Sequence
    JDK1.7和JDK1.8版本的新特性
  • 原文地址:https://blog.csdn.net/2401_86940371/article/details/142170137