web-dev-qa-db-fra.com

Configurer le délai de démarrage de Jedis

J'ai des problèmes pour compléter une .hgetall(), voici ce que j'ai essayé:

Jedis jedis = new Jedis(REDIS_MASTER_NODE);
jedis.connect();
jedis.configSet("timeout", "30");

Map<String, String> alreadyStored = jedis.hgetAll(redisTargetHash);

et voici ce que je reçois:

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)

Cela a résolu le problème:

Jedis jedis = new Jedis(REDIS_MASTER_NODE, 6379, 1800);
11
dranxo

Peu de choses à considérer:

  1. Pour les classes de Jedis et de Jedispool, le délai d'attente est en milisecondes. Délai d'expiration par défaut, au moins en 2.5.1, si je le vois, est de 2000 (Milisec): int redis.clients.jedis.Protocol.DEFAULT_TIMEOUT = 2000 [0x7d0]

  2. Selon - Ceci Documentation, Redis 2.6 ou supérieur ne ferme pas la connexion, même si le client est inactif. Je n'ai pas encore vérifié cela, et je vais essayer de mettre à jour le post quand je le ferai.

3
milkyway