Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Kann keine Jedis-Verbindung herstellen; Eine Ressource konnte nicht aus dem Pool abgerufen werden

1. Versuchen Sie, den Jedis-Verbindungspool zu verwenden, um die Jedis-Instanz zu erhalten, anstatt new Jedis() zu verwenden , dafür müssen Sie JedisPool in config konfigurieren. Da Sie es als Bean verwenden, sollten Sie JedisPool Bean verwenden und dann Jedis daraus holen, wo immer Sie eine Operation ausführen sollen, und es nach Abschluss schließen.

2. Andernfalls verwenden Sie redisTemplate von Spring mit der folgenden Konfiguration

@Bean
public JedisConnectionFactory redisConnectionFactory() {
    JedisConnectionFactory factory = new JedisConnectionFactory();
    factory.setHostName(redisHostName);
    factory.setPort(redisPort);
    factory.setUsePool(true);

    return factory;
}

@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory cf) {
    RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>();
    redisTemplate.setDefaultSerializer(new StringRedisSerializer());
    redisTemplate.setConnectionFactory(cf);

    return redisTemplate;
}