我想监视并定期记录有关 Redis 连接池使用情况的信息。
我通过 spring-data-redis RedisTemplate 对象使用 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();
}
}