Acesse o pool de conexão do Redis usando Spring Data Redis

Sep 14 2020

Desejo monitorar e registrar periodicamente informações sobre o uso do pool de conexões do Redis.

Eu uso o Redis por meio do objeto RedisTemplate spring-data-redis.

Existe alguma maneira de acessar a piscina?

Respostas

Jack Sep 24 2020 at 20:52

Consegui acessar o pool interno usando a API de reflexão.

  private GenericObjectPool<Jedis> jedisPool() {
    try {
      Field pool = JedisConnectionFactory.class.getDeclaredField("pool");
      pool.setAccessible(true);
      Pool<Jedis> jedisPool = (Pool<Jedis>) pool.get(jedisConnectionFactory());
      Field internalPool = Pool.class.getDeclaredField("internalPool");
      internalPool.setAccessible(true);
      return (GenericObjectPool<Jedis>) internalPool.get(jedisPool);
    } catch (NoSuchFieldException | IllegalAccessException e) {
      e.printStackTrace();
    }
  }