csredis
csredis copied to clipboard
按文档报错:Connection was not opened 腾讯云redis数据库
腾讯云redis的链接字符串是这种格式的,请问支持吗? "fb92bf2e0abf11e5:[email protected]:6379" /实例ID:密码@访问地址:端口/
var csredis = new CSRedis.CSRedisClient("10.0.0.1:6379,password= 1234561178a1A,idletimeout=15000,testcluster=false");
我仔细看了下issues,很多人提到这个问题,不是腾讯云redis得问题,是如果项目服务器和redis服务器不在一台服务器上,就会出现这个问题。
下面得图就可以说明问题。
在startup中实例化后,在每个页面如果不重新实列,RedisHelper.Instance就为空,链接失败,报错:Connection was not opened,从新实例一次代码就OK,但如果服务器得地址是127.0.0.1,那么页面中就不需要从新实例。

你可以加我微信,我把服务器得密码和redis得密码都给,方便你测试 微信:18007232345
图片是不是传错了,两张是一样的。
如果是 .net core,在 Startup.cs 初始化一次:
var csredis = new CSRedis.CSRedisClient("10.0.0.1:6379,password= 1234561178a1A,idletimeout=15000,testcluster=false");
RedisHelper.Initialization(csredis);
如果是 .net framework 在程序启动的时候执行上述代码
如果项目服务器和redis服务器不在一台服务器上,就会出现这个问题。
不是这个原因,好几年的项目了,并且我也经常用 docker redis 作测试
第一张就是下面得代码。跟你写得一样。

你的腾讯云rds 是集群吗?请加上这个参数:testcluster=false
不是集群,加了这个参数, 就是准备用腾讯云redis,测试一下,就发现了问题。
在startup里的代码: redisConString = "122.17.0.13:6379,password=bswwe23sd_,idletimeout=15000,testcluster=false"; var csredis = new CSRedis.CSRedisClient(redisConString);
RedisHelper.Initialization(csredis);
你可以http://www.hellowapp.com.cn/
错误详情:
Connection was not opened {"StackTrace":" at CSRedis.CSRedisClient.GetAndExecute[T](RedisClientPool pool, Func2 handler, Int32 jump, Int32 errtimes)\r\n at CSRedis.CSRedisClient.ExecuteScalar[T](String key, Func3 hander)\r\n at CSRedis.CSRedisClient.Set(String key, Object value, Int32 expireSeconds, Nullable1 exists)\r\n at RedisHelper1.Set(String key, Object value, Int32 expireSeconds, Nullable`1 exists)\r\n at DM.Web.Pages.IndexModel.OnGet() in D:\MyDocument\DreamPlus\web\DM.Web\Pages\Index.cshtml.cs:line 44","Message":"Connection was not opened","Data":{},"InnerException":null,"HelpLink":null,"Source":"CSRedisCore","HResult":-2146233088}
**再次访问错误就变成: 【127.0.0.1:6379/0】状态不可用,等待后台检查程序恢复方可使用。Connection was not opened
如果把地址改成本地:127.0.0.1,就没问题。**
我下载了csredis,源码里也没与“状态不可用,等待后台检查程序恢复方可使用”这句话啊
反不方便加个QQ或微信聊,很多人问道这个问题呢。
www.hellowapp.com.cn 这台机器能访问 122.17.0.13:6379 吗?网络是通的?
确定可以访问,不能访问得话,重新实列化肯定也不能访问了。 这个人问题跟我得一样 https://github.com/2881099/csredis/issues/245
我的qq 2881099
确定可以访问,不能访问得话,重新实列化肯定也不能访问了。 这个人问题跟我得一样 #245
问题不一样,他的是协议解析问题,你的是 Connection was not opened
请问最终这个问题解决了吗?是怎么解决的
请问最终这个问题解决了吗?是怎么解决的
好的,谢谢,知道问题了。被别的层里从新实列了一个。谢谢。
这是楼主在 qq 回复我的。
- 加上这个配置
testcluster=false,idleTimeout=15000
- 检查网络是否连通
telnet rds 6379
谢谢 吓我一跳,担心我们以后也会出问题 😄
我们做的哨兵的集群,但是直接用的单例的client,没有用 RedisHelper.Initialization(csredis);进行初始化。报了同样的错误。并且发现该问题现在经常出现。貌似是近两个版本更新后的问题。之前我们是没有出现这种情况的。
加了 testcluster=false,idleTimeout=15000 貌似暂时好了,但是具体的是否还会出现要等后续的测试。
把redis服务器的timeout设置为0试试