C# ServiceStack.Redis和StackExchange.Redis 使用心得
背景故事
最近因项目需要在C#使用redis,在网上随意找一下看到挺多C#中使用ServiceStack.Redis 文章同时好像也是redis推介的C#客户端,就在没在仔细了解的情况下就直接使用了ServiceStack.Redis。
产生的问题
在使用的过程中发现ServiceStack.Redis在频繁的读写后或运行一段时间后报错,后来在网上翻资料发现它已商业化,免费版每小时只能访问redis6000次。
给出的解决方案有2个:
使用v4.0以前的版本;
使用其它redis客户端开发;
解决方法
1. 方法直接在nuget中安装4.0以前的版本,比如3.9.71版;
2. 我使用StackExchange.Redis。
StackExchange.Redis 使用方法及注意事项
我使用当前StackExchange.Redis 2.6.45版本进行开发,该客户端直接在nuget中进行安装就可以了。
在StackExchange.Redis 的基础上进行一些简单的封装做成一个工具类,代码如下
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using StackExchange.Redis; namespace Utils.Redis { public class RedisUtil { readonly IDatabase client = null; public RedisUtil(string ip,int port,int db) { //设定连接 ConnectionMultiplexer connection = ConnectionMultiplexer.Connect($"{ip}:{port}"); //打开redis中db的数据库 client = connection.GetDatabase(db); } //Hash获取 public Dictionary<string,string> getHashEntity(string hashName) { return client.HashGetAll(hashName).ToStringDictionary(); } //Hash设定 public void SetEntryInHash(string hashName, string keyName, string value) { client.HashSet(hashName, keyName, value); } //Hash删除 public void RemoveEntryInHash(string hashName, string keyName) { client.HashDelete(hashName, keyName); } }
项目主要使用hash来完成工作,就没在完成key、String、List、Set等的封装,需要使用的话也是在IDataBase中有相关的方法直接调用。
StackExchange.Redis注意问题
使用的时候会经常有
StackExchange.Redis.RedisTimeoutException: Timeout performing HGETALL (5000ms) 的超时错误
这个在网上比较随意查一下资料发现是个比较常见的问题,大多数解决建议也是换redis客户端。
我这次项目逻辑不在意少数几个超时异常,我就没有深究问题,后续如果有好的解决方法再来和大家一起分享
————————————————
版权声明:本文为CSDN博主「reinforceI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/reinforceI/article/details/125309916
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)