jedis工具类的使用很简单。但是考虑到一些性能的问题做出一些调整。
public Jedis getJedis() {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
} catch (Exception e) {
e.printStackTrace();
}
return jedis;
}
//随便在放个使用的方法。
public Object get(String key){
Jedis jedis=null;
Object o=null;
try{
jedis=getJedis();
if(null != jedis)
o=SerializeUtil.unserialize(jedis.get(key));
}catch(Exception e){
}finally{
returnResource(jedis);
}
}
//这样的话,假设一个service调用了3次redis,那么就会去获取jedis,还jedis。
//这样就会导致非常的消耗资源
//也做了许多相同的事情。因此考虑换个方式。采用ThreadLocal来作为jedis的保存。
//再加上在service层采用aop的方式,获取jedis,再关闭jedis连接。
public static ThreadLocal<Jedis> jedisTL=new ThreadLocal<>();
public Jedis getJedis(){
Jedis jedis=null;
try{
jedis=jedisTL.get();
if(null == jedis){
jedis=jedisPool.getResource();
jedisTL.set(jedis);
}
}catch(Exception e){
}
}
private void returnResource(Jedis jedis){
try{
if(null != jedis)
jedisPool.returnResource(jedis);
}catch(Exception e){}
}
通过AOP去threadLocal去获取,没有的话,就不去池里面取了。