一尘不染

配置Jedis超时

redis

我在完成时遇到问题.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);

阅读 1324

收藏
2020-06-20

共1个答案

一尘不染

如果要设置Jedis connection timeout,则应使用为此专门设计的构造函数进行设置:

public Jedis(final String host, final int port, final int timeout)

您正在做的是从设置Redis设置的超时jedis。这样做CONFIG SET timeout 60,意味着redis将在60几秒钟后关闭空闲的客户端连接。这就是为什么您在Jedis中遇到例外的原因。

2020-06-20