2

我得到这个错误。解决方法是什么?

无法在 127.0.0.1:6379 连接到 redis 实例 >> 堆栈跟踪:在 ServiceStack.Redis.RedisNativeClient.AssertConnectedSocket() 处 ServiceStack.Redis.Redis.RedisNativeClient.Connect()
处 ServiceStack.Redis.RedisNativeClient.SendCommand(Byte[][ ] cmdWithBinaryArgs) 在 ServiceStack.Redis.RedisNative Client.SendExpectLong(Byte[][] cmdWithBinaryArgs) 在 ServiceStack.Redis.RedisClientList.GetEnumerator() 一个 t Common.Tools.RedisDBHelper.checkListInt(String myKey, Int32 id) >> 内部异常:消息:无法建立连接,因为目标机器主动拒绝它 127.0.0.1:6379>> 内部异常 :stacktrace : 在 System.Net.Sockets.Socket.Connect(String host, Int32 port) 在 ServiceStack.Redis 的 System.Net.Sockets.Socket.Connect(IPAddress[] 地址,Int32 端口)。 RedisNativeClient.Connect()CurrentStack:在 System.Environment。GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at Common.Tools.E xtensionHelper.saveAsDebug(Exception myEx, String aciklama) at Common.Tools.RedisDBHelper.checkListInt(String myKey, Int32 id)

4

3 回答 3

1

我认为可能是 Redis 的负载很忙。然后我以为是ServiceStack。但归根结底,是 Windows 中的 TCP 发布速度不够快。TCP 在条目的值过期之前不会释放关闭的连接。我将 TcpTimeWaitDelay 设置为 45 秒。http://technet.microsoft.com/en-us/library/cc938217.aspx并设置 MaxUserPort http://mashijie.blogspot.com/2009/05/change-default-setting-of-tcp-ports.html

调整端口范围为1025-64511

确保重新启动 Windows

另请参阅:超出 Redis 连接/缓冲区大小限制

于 2014-02-06T16:41:33.477 回答
0

我自己也有这个问题。你正在使用什么 Redis 二进制文件(来自什么来源,GitHub,非官方构建)?

我找到的原因是:这实际上是 Redis 的一种说法,它不能创建连接。(正如所提供的跟踪所解释的那样)应该是一个更清楚的例外,说明这是来自 Redis 而不是防火墙或任何恕我直言。

我的猜测是您正在 x64 架构上运行 32 位构建的二进制文件。

如果您从链接下载版本:MsOpenTech Group 并使用 MS C 编译器(如免费的 VS 2012 Express)构建它,您应该能够运行生成的二进制文件而不会出现此问题。

不能做出任何承诺,但这对我有用。

编辑:另外,请确保启动 redis-server(以管理员身份)并在防火墙中授予必要的权限,否则您将没有服务器来连接您的 redis-cli 客户端!

于 2013-10-09T16:11:58.993 回答
0

这就是 RedisClient 无法创建 TCP 连接时发生的情况。抛出异常是这里的正确行为。

于 2013-06-20T15:00:31.560 回答