C#使用Redis做缓存遇到的坑处理方案

前言:因为redis相关的demo,教程已经很多了,所以这里就不说了,现在主要说下我在使用过程中遇到的坑,因为这些坑在不知道什么原因的情况下处理起来非常浪费时间,所以我把我遇到的坑整理出来。


一. c#连接设置了密码的redis的坑

1.c#连接设置了密码的redis   相关教程:点击打开链接

可能有人会出现照着这个教程做的结果没效果,报错如下:



也可能是别的提示错误。

参考解决方案

  1.是因为引用的redis相关dll文件版本过低,不支持password@ip:port  这种连接,可尝试使用NuGet 安装较新的dll再试。NuGet控制台 pm命令安装指令Install-Package ServiceStack.Redis (-Version 4.0.62) 括号内的为版本号,版本问题会引起安装的redis组件版本与当前的.NET组件不兼容,报错如下图。所以依自己程序的.NET版本而定(※ V4以上版本的ServiceStack已经商业化,每小时只能访问Redis 6000次,超出会报错“The free-quota limit on '6000 Redis requests per hour' has been reached“,是否使用看个人需求了。下面会说到解决方案) 参考链接:点击打开链接


  2.因为V4版本的访问次数限制,大多数情况下不能满足我们的需求,而低版本的ServiceStack没有这个限制 ,所以这里只能选择低版本的ServiceStack了。NuGet控制台 pm命令安装指令 Install-Package ServiceStack.Redis -Version 3.0 安装3.0版本的ServiceStack。(3.0版本的和4.0版本的用连接池连接有密码的redis时有一处不同,4.0可以使用这种方式password@IP:Port连接,而3.0版本是不支持的,IRedisClient接口有一个属性Password,这个属性就是用来设置连接密码的!)

二.Redis服务端的坑

  1.启动不了redis服务的问题?1053错误??

参考解决方案

  因为redis.conf 配置文件中有参数配置错误导致redis出错,从而启动不了redis服务。可尝试还原redis.conf配置文件在重试。

  2.客户端在连接redis时出现连接不上,报错目标计算机积极拒绝,无法连接等错误??(出这个错误的典型版本是3.2.100)


参考解决方案

  1.redis2.x版本是否都没有这个问题,换了3.x版本就不行。①打开redis.conf或redis.windows.conf查找bind,如果有bind localhost,就把它注释掉;②把图片所示的bind 127.0.0.1改成bind 0.0.0.0,注释会出错,只能修改。这样就可以把访问限制去掉了,然后在客户端重试下,是不是可以了!



  2.尝试关闭防火墙或增加入站出战规则,放行redis的端口号。

  3.尝试重启服务器


※conf文件修改后,都需要重启redis服务才能有效果!


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#使用Redis缓存可以通过使用RedisHelper类来实现。首先,你需要导入DeveloperSharp.Redis命名空间,然后可以使用该类提供的一些方法来存取字符串和对象数据。 对于存取字符串,你可以使用RedisHelper.SetStringKey方法存入一个字符串到Redis缓存中,例如: ``` RedisHelper.SetStringKey("MyText", "世界,你好"); ``` 然后,你可以使用RedisHelper.GetStringKey方法从Redis缓存中取出该字符串,例如: ``` string aa = RedisHelper.GetStringKey("MyText"); ``` 对于存取对象,你首先需要创建一个对象,例如: ``` teacher obj = new teacher { name = "王老师", age = 42 }; ``` 然后,使用RedisHelper.SetStringKey方法将该对象存入Redis缓存中,例如: ``` RedisHelper.SetStringKey("MyTeacher", obj); ``` 最后,你可以使用RedisHelper.GetStringKey<teacher>方法从Redis缓存中取出该对象,例如: ``` teacher t = RedisHelper.GetStringKey<teacher>("MyTeacher"); string Name = t.name; int Age = t.age; ``` 除了存取字符串和对象外,RedisHelper类还提供了很多其他常用功能,如批量缓存、过期时间设定、异步、哈希存储和有序集合存储等等。你可以查看RedisHelper类的其他方法来了解更多功能。 希望这些信息能够帮助到你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [.NET/C#大型项目研发必备(11)--使用Redis缓存](https://blog.csdn.net/weixin_45237473/article/details/122695062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [C# 使用Redis缓存](https://blog.csdn.net/qq_33678106/article/details/102916284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值