我正在帮助维护一个使用 Jedis 连接到 Sharded Redis 的应用。
我正在使用的应用程序在服务中保留了一个 ShardedJedisPool 实例,以便在多个请求中重复使用它。
我是 reviewing the docs on Sharded Jedis和 noticed the following comment :
Forgetting pool.destroy keeps the connection open until timeout is reached.
我们的应用没有在任何地方调用 pool.destroy()。我们应该在每次请求时调用 pool.destroy() 吗?而且我想,是否还要根据每个请求创建一个新池?或者我的池可以在我的服务生命周期内保持 Activity 状态,并且只在服务的 finalize 方法中调用 pool.destroy() 吗?
最佳答案
ShardedJedisPool
和 JedisPool
都旨在在应用程序的整个生命周期内仅创建一次。当应用程序关闭时,您会销毁它们。
ShardedJedisPool
和 JedisPool
都是线程安全的,这意味着跨线程(在您的请求中)使用相同的实例并获取 ShardedJedis 的实例是安全的
或 Jedis
。使用 ShardedJedis 或 Jedis 后,您应该将它们返回到池中,否则池将耗尽(取决于您如何配置它)。
关于java - Sharded Jedis - 我应该什么时候调用 pool.destroy()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21613811/