<beanid="jedisConfig"class="redis.clients.jedis.JedisPoolConfig">
<!-- 说明一个pool可以有多少个Jedis实例 -->
<propertyname="maxActive"value="10" />
<!-- 最大Idle-->
//redis的使用,会涉及到包的版本的使用,这里使用的版本为 jedis2.1.0及Commons-pool-1.6
<propertyname="maxIdle"value="5" />
<!-- 最小Idle -->
<propertyname="minIdle"value="1" />
<!-- 获得一个jedis实例的时候是否检查连接可用性(ping()) -->
<propertyname="testOnBorrow"value="true" />
<!-- return 一个jedis实例给pool时,是否检查连接可用性(ping()) -->
<propertyname="testOnReturn"value="true" />
<!-- idle状态监测用异步线程evict进行检查, -->
<propertyname="testWhileIdle"value="true" />
<!-- 一次最多evict的pool里的jedis实例个数 -->
<propertyname="numTestsPerEvictionRun"value="10" />
<!-- test idle 线程的时间间隔 -->
<propertyname="timeBetweenEvictionRunsMillis"value="60000" />
<!--最大等待wait时间--><propertyname="maxWait"value="3000" />
<propertyname="whenExhaustedAction"value="" />
//WHEN_EXHAUSTED_FAIL = 0; 直接抛出异常throw new NoSuchElementException("Pool exhausted");
//WHEN_EXHAUSTED_BLOCK = 1;borrowObject()将会阻塞,直到有可用新的或者空闲的object为止,或者如果配置了maxWait, //如果请求阻塞超时,将抛出NoSuchElementException.如果maxWait为负数,请求将会无限制的阻 //塞下去,默认配置。 //WHEN_EXHAUSTED_GROW = 2;borrowObject()将会继续创建新的对象,并返回,因此,pool维护的对像数将超出maxActive; //
</bean>
//代码中通过JedisPoolConfig获取redis操作实例
public String set(String key, String value) {
Jedis jedis = null;
boolean success = true;
try {
jedis = this.pool.getResource();
return jedis.set(key,value);
}catch (JedisException e) {
success = false;
if(jedis != null){
//监控异常,当发生异常的时候,必须使用这种方式返还
pool.returnBrokenResource(jedis);
}
throw e;
}finally{
if(success && jedis != null){
//实例使用完毕,必须返还给JedisPoolConfig
this.pool.returnResource(jedis);
}
}
}