J'essaie de me connecter à Redis en utilisant Jedis dans mon application Java. J'instancie un objet JedisPool, et quand j'obtiens la ressource, il lance une exception disant qu'il ne peut pas retourner la ressource. Ce qui est bizarre, c'est que si je instancie un objet Jedis, il se connecte sans problème et je peux changer les données.java jedis (redis) ne peut pas se connecter
Voilà ma classe RedisDatabase:
package me.joeleoli.proxylink.database;
import me.joeleoli.proxylink.ProxyLink;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class RedisDatabase {
private JedisPool pool;
public RedisDatabase(String host, int port, String password) {
ProxyLink.getInstance().getLogger().info("Attempting to establish Redis connection " + host + ":" + port);
this.pool = new JedisPool(host, port);
try (Jedis jedis = this.pool.getResource()) {
if (password != null && !password.equals("")) {
jedis.auth(password);
}
jedis.select(0);
jedis.close();
}
}
public JedisPool getPool() {
return this.pool;
}
}
Voici mon erreur:
22:16:15 [INFO] [ProxyLink] Attempting to establish Redis connection 127.0.0.1:6379
22:16:15 [WARNING] Exception encountered when loading plugin: ProxyLink
redis.clients.jedis.exceptions.JedisException: Could not return the resource to the pool
at redis.clients.jedis.JedisPool.returnResource(JedisPool.java:106)
at redis.clients.jedis.JedisPool.returnResource(JedisPool.java:12)
at redis.clients.jedis.Jedis.close(Jedis.java:3206)
at me.joeleoli.proxylink.database.RedisDatabase.<init>(RedisDatabase.java:23)
at me.joeleoli.proxylink.ProxyLink.onEnable(ProxyLink.java:71)
at net.md_5.bungee.api.plugin.PluginManager.enablePlugins(PluginManager.java:227)
at net.md_5.bungee.BungeeCord.start(BungeeCord.java:273)
at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:111)
at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)
Caused by: redis.clients.jedis.exceptions.JedisException: Could not return the resource to the pool
at redis.clients.util.Pool.returnResourceObject(Pool.java:61)
at redis.clients.jedis.JedisPool.returnResource(JedisPool.java:103)
... 8 more
Caused by: java.lang.IllegalStateException: Object has already been returned to this pool or is invalid
at org.apache.commons.pool2.impl.GenericObjectPool.returnObject(GenericObjectPool.java:551)
at redis.clients.util.Pool.returnResourceObject(Pool.java:59)
... 9 more
Qu'est-ce que votre proxylink, L'exception semble provenir de votre code dans proxylink – GuangshengZuo
@Joel Evans, vous pouvez utiliser cette alternative [redission] (https://redisson.org/) pour votre projet comme une alternative – kaviranga
@GuangshengZuo Pour l'instant, tout ce que ProxyLink fait est d'instancier la classe RedisDatabase. Donc, il n'y a aucun moyen d'interférer. –