为了方便使用,Jedis提供了JedisPoolConfig,它继承了GenericObjectPoolConfig在空闲检测上的一些设置。
public class JedisPoolConfig extends GenericObjectPoolConfig {public JedisPoolConfig() {
// defaults to make your life with connection pool easier :)
setTestWhileIdle(true);
setMinEvictableIdleTimeMillis(60000);
setTimeBetweenEvictionRunsMillis(30000);
setNumTestsPerEvictionRun(-1);
}
}
配置参数解析
JedisPoolConfig中可以能够配置的参数有很多,连接池实现依赖apache 的commons-pool2。上面源码也大致列举了一些配置参数,下面在详细说明一下。
把池理解为工厂,池中的实例理解为工人,如下图,这样池中的很多参数理解起来就比较容易了。
Jedis连接就是连接池中JedisPool管理的资源,JedisPool保证资源在一个可控范围内,并且保障线程安全。使用合理的GenericObjectPoolConfig配置能够提升Redis的服务性能,降低资源开销。下列两表将对一些重要参数进行说明,并提供设置建议。
参数 说明 默认值 建议maxTotal 资源池中的最大连接数 8 参见关键参数设置建议
maxIdle 资源池允许的最大空闲连接数 8 参见关键参数设置建议
minIdle 资源池确保的最少空闲连接数 0 参见关键参数设置建议
blockWhenExhausted 当资源池用尽后,调用者是否要等待。只有当值为true时,下面的maxWaitMillis才会生效。 true 建议使用默认值。
maxWaitMillis 当资源池连接用尽后,调用者的最大等待时间(单位为毫秒)。 -1(表示永不超时) 不建议使用默认值。
testOnBorrow 向资源池借用连接时是否做连接有效性检测(ping)。检测到的无效连接将会被移除。 false 业务量很大时候建议设置为false,减少一次ping的开销。
testOnReturn 向资源池归还连接时是否做连接有效性检测(ping)。检测到无效连接将会被移除。 false 业务量很大时候建议设置为false,减少一次ping的开销。
jmxEnabled 是否开启JMX监控 true 建议开启,请注意应用本身也需要开启。