public class RedisUtil {
Logger logger = LoggerFactory.getLogger(RedisUtil.class);
private JedisPool pool = null;
/**
*在构造函数中初始化JedisPool
**/
public RedisUtil() {
JedisPoolConfig config = new JedisPoolConfig();
// 控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
config.setMaxActive(SystemConstants.REDIS_MAX_ACTIVE);
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
config.setMaxIdle(SystemConstants.REDIS_MAX_IDLE);
//表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出
config.setMaxWait(SystemConstants.REDIS_MAX_WAIT);
//表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
config.setTestOnBorrow(true);
config.setTestOnReturn(true);
pool = new JedisPool(config, SystemConstants.REDIS_IP,SystemConstants.REDIS_PORT,SystemConstants.TIMEOUT); //
}
public JedisPool getPool() {
return pool;
}
public void setPool(JedisPool pool) {
this.pool = pool;
}
public Jedis getJedis() {
Jedis jedis = null;
int count =0;
do{
try{
jedis = this.getPool().getResource();
} catch (Exception e) {
getPool().returnBrokenResource(jedis);
logger.error("Redis Exception :"+e.toString());
e.printStackTrace();
}
count++;
}while(jedis==null&&count<SystemConstants.REDIS_RETRY_NUM);
return jedis;
}
/**
*关闭一个Jedis 资源 return 给pool
*/
public void closeJedis(Jedis jedis) {
if(jedis != null) {
this.pool.returnResource(jedis);
}
}
}
// 以下为使用方法
// 获取Jedis 对象
Jedis jedis = redisUtil.getJedis();
rsp.setTariff_version(jedis.get("tariff_version"));
jedis.rpush(key.getBytes(),data);
// 关闭jedis 对象
redisUtil.closeJedis(jedis);