Jedis close问题
详情请参考: https://github.com/xetorthio/jedis/wiki/Getting-started
使用jedis连接池时要注意进行 jedis.close(),否则会造成连接使用完毕后不能归还给连接池。
一种方式是 使用 try-with-resources statement 方式
( try-with-resources statement 请参考:https://www.cnblogs.com/memory4young/p/example-of-try-with-resources-statement.html )
try() 中的资源会自动被关闭。
/// Jedis implements Closeable. Hence, the jedis instance will be auto-closed after the last statement. try (Jedis jedis = pool.getResource()) { /// ... do stuff here ... for example jedis.set("foo", "bar"); String foobar = jedis.get("foo"); jedis.zadd("sose", 0, "car"); jedis.zadd("sose", 0, "bike"); Set<String> sose = jedis.zrange("sose", 0, -1); } /// ... when closing your application: pool.close();
另一种方式 手工 close:
如果你不能使用 try-with-resource, 你可以手工进行 Jedis.close().
Jedis jedis = null;
try {
jedis = pool.getResource();
/// ... do stuff here ... for example
jedis.set("foo", "bar");
String foobar = jedis.get("foo");
jedis.zadd("sose", 0, "car"); jedis.zadd("sose", 0, "bike");
Set<String> sose = jedis.zrange("sose", 0, -1);
} finally {
// You have to close jedis object. If you don't close then
// it doesn't release back to pool and you can't get a new
// resource from pool.
if (jedis != null) {
jedis.close();
}
}
/// ... when closing your application:
pool.close();