NutzCN Logo
问答 请问nutzbook自带的jedis()方法,执行完为什么不需要关闭呢
发布于 3041天前 作者 qq_3bdebbbd 1857 次浏览 复制 上一个帖子 下一个帖子
标签:

nutzbook自带的jedis()方法,用的是RedisInterceptor,为什么使用完jedis()以后不需要关闭也能正常呢?而我自己new一个JedisPool(单例),然后Jedis jedis = jedisPool.getResource(),这个jedis对象就必须在用完后关闭,否则就会占满redis连接数。

4 回复

因为是个aop. 你可以看看jedis()所在的类做了什么.

try (Jedis jedis = jedisPool.getResource()) {
	TL.set(jedis);
	chain.doChain();
} finally{
	TL.remove();
}

jedis()所在的类,是将jedis对象放在ThreadLocal里面,最后finally的时候TL.remove();这样就是将对象销毁了吗,jedis对象一旦销毁,他保持的redis连接也会释放,是这样吗?

@qq_3bdebbbd jdk7语法,try resource

finally里面的remove只是移除上下文.

来自炫酷的 NutzCN

@wendal 学到了,感谢!

添加回复
请先登陆
回到顶部