private ThreadLocal<Jedis> local = new ThreadLocal<Jedis>();
//这是我的getConnection方法
public Jedis getConn() {
Jedis jedis = local.get();
if (jedis == null) {
if (jedisPool == null) {
initPool();
}
jedis = jedisPool.getResource();
local.set(jedis);
}
return jedis;
}
//这是我的closeConn方法
public void closeConn() {
// 从线程本地获取redis连接对象
Jedis jedis = local.get();
if (jedis != null) {
System.out.println("不为空,关闭");
jedis.close();
}
local.set(null);
}
奇怪的是,我在线程里面调用了redisPoolUtil.closeConn();之后,调用jedis.set(“1”, “2”);仍然会成功,好像这里的closeConn并没有生效,希望老师坐下解答。一下是我的调用完整步骤
@Autowired
RedisPoolUtil redisPoolUtil;
@GetMapping("/simulateRedisKV")
public JSONObject simulateRedisManyKV() {
Jedis jedis = redisPoolUtil.getConn();
jedis.set("1", "2");
redisPoolUtil.closeConn();
// 依然会成功
jedis.set("2", "2");
return CommonUtil.successJson("Success");
}