Redis 连接关闭错误

Ale*_*lex 5 redis jedis

尽管我执行了以下操作,但我还是收到连接异常(在最后给出):

创建 Jedis 实例时,我将超时字段设置为 1 小时 (60*60*1000)。我也用0试过了,还是不行。

当我在 7 分钟后检查日志时,我注意到了这一点,尽管我认为异常会更早发生(在 300 秒时)。为什么我总是得到它?知道为什么吗?

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: It seems like server has closed the connection.
    at redis.clients.util.RedisInputStream.readLine(RedisInputStream.java:90)
    at redis.clients.jedis.Protocol.processMultiBulkReply(Protocol.java:111)
    at redis.clients.jedis.Protocol.process(Protocol.java:64)
    at redis.clients.jedis.Protocol.read(Protocol.java:127)
    at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:199)
    at redis.clients.jedis.BinaryJedis.smembers(BinaryJedis.java:1187)
Run Code Online (Sandbox Code Playgroud)

Did*_*zia 3

我会建议:

  • 检查 Redis 服务器配置文件中是否未设置不活动超时。将其设置为零。https://github.com/antirez/redis/blob/unstable/redis.conf#L44

  • 检查应用程序执行的 smembers 命令是否不会返回数百万个项目。超过某个阈值后,较大的通信缓冲区可能会导致连接关闭。

当然,这也可能是由于网络基础设施本身造成的,尤其是当您在公共云的不同虚拟机上运行 Redis 客户端和服务器时。