Sharded Jedis - 我什么时候应该调用pool.destroy()?

时间:2014-02-06 20:52:38

标签: java redis jedis

我正在帮助维护一个使用Jedis连接到Sharded Redis的应用程序。

我正在使用的应用程序在服务中保留 ShardedJedisPool 的实例,以便在多个请求中重复使用它。

我是reviewing the docs on Sharded Jedisnoticed the following comment

  

忘记pool.destroy使连接保持打开状态,直到超时为止   达到。

我们的应用并未在任何地方调用 pool.destroy()。我们应该在每次请求时调用 pool.destroy()吗?我想,在每个请求上都创建一个新池?或者我的游泳池可以在我的服务生命周期内保持活力,并且只能在服务的 finalize 方法中调用 pool.destroy()

1 个答案:

答案 0 :(得分:2)

ShardedJedisPoolJedisPool只能在应用程序的整个生命周期内创建一次。并在应用程序关闭时销毁它们。 ShardedJedisPoolJedisPool都是线程安全的,这意味着跨线程使用相同的实例是安全的(在您的情况下是请求)并获得ShardedJedis或{{1}的实例}。在使用ShardedJedis或Jedis之后,您应该将它们返回到池中,否则池将会耗尽(取决于您如何配置它)。