jedis工具类—优化

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去获取,没有的话,就不去池里面取了。

猜你喜欢

转载自blog.csdn.net/qq_40384690/article/details/82715934