Spring数据Redis。如何知道有效,空闲连接的数量?

时间:2015-08-06 08:34:38

标签: spring redis spring-data jedis apache-commons-pool

在Spring中,我有一个像这样的jedisConnFactory和一个jedisPoolConfig bean

    <bean id="jedisConnFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="127.0.0.1" p:port="6379" p:poolConfig-ref="jedisPoolConfig" />

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxTotal" value="${redis.pool.maxTotal}" />
        <property name="maxIdle" value="${redis.pool.maxIdle}" />
        <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" />
    </bean>

将数据发送到服务器是可以的。但我不知道如何验证JedisPoll是否正常工作。

如何查看活动,空闲连接的数量?

2 个答案:

答案 0 :(得分:0)

确保在池配置中启用了JMX。请注意,也可以传递GenericObjectPoolConfig,这使您可以完全控制对象池。然后,您可以通过带有jconsole的JMX连接到您的应用程序,并且可以跟踪连接池的实际状态。

答案 1 :(得分:0)

我们可以通过Java反射获得指标:

      Field poolField = JedisConnectionFactory.class.getDeclaredField("pool");
  poolField.setAccessible(true);
  Pool<Jedis> jedisPool = (Pool<Jedis>)poolField.get(connectionFactory);
  int activeNum = jedisPool.getNumActive();
  int idleNum = jedisPool.getNumIdle();
  int waitNum = jedisPool.getNumWaiters();
  long maxBorrowWaitMs = jedisPool.getMaxBorrowWaitTimeMillis();
  long meanBorrowWaitMs = jedisPool.getMeanBorrowWaitTimeMillis();

输出:

pool monitor - activeNum=0,idleNum=1,waitNum=0, maxBorrowWaitMs=7, meanBorrowWaitMs=0
相关问题