使用 Spring Data Redis 访问 Redis 连接池

Access Redis connection pool using Spring Data Redis

我想监控并定期记录有关 Redis 连接池使用情况的信息。

我通过spring-data-redis RedisTemplate对象使用Redis。

有什么方法可以访问池吗?

我能够使用反射访问内部池 API。

  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();
    }
  }