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服务才能有效果!


展开阅读全文

没有更多推荐了,返回首页