我在完成 .hgetall()
时遇到问题,这是我尝试过的:
Jedis jedis = new Jedis(REDIS_MASTER_NODE);
jedis.connect();
jedis.configSet("timeout", "30");
Map<String, String> alreadyStored = jedis.hgetAll(redisTargetHash);
这是我得到的:
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
at redis.clients.jedis.Protocol.process(Protocol.java:79)
at redis.clients.jedis.Protocol.read(Protocol.java:131)
at redis.clients.jedis.Connection.getBinaryMultiBulkReply(Connection.java:199)
at redis.clients.jedis.Jedis.hgetAll(Jedis.java:851)
这解决了这个问题:
Jedis jedis = new Jedis(REDIS_MASTER_NODE, 6379, 1800);
原文由 dranxo 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你想做的是设置 Jedis 连接
timeout
,你应该使用为此制作的特殊构造函数来完成:您正在做的是从
Jedis
设置 Redis 设置的 _超时_。执行CONFIG SET timeout 60
,意味着 Redis 将在60
秒后关闭 空闲 客户端连接。这就是为什么你在绝地武士中得到例外。