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

标签 java redis jedis

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

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

我是 reviewing the docs on Sharded Jedisnoticed the following comment :

Forgetting pool.destroy keeps the connection open until timeout is reached.

我们的应用没有在任何地方调用 pool.destroy()。我们应该在每次请求时调用 pool.destroy() 吗?而且我想,是否还要根据每个请求创建一个新池?或者我的池可以在我的服务生命周期内保持 Activity 状态,并且只在服务的 finalize 方法中调用 pool.destroy() 吗?

最佳答案

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

关于java - Sharded Jedis - 我应该什么时候调用 pool.destroy()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21613811/

相关文章:

java - 为什么 Cryptoki.C_OpenSession 有时会与 HSM 断开连接

java - Apache POI 版本 3.8 是否有助于解决 "org.apache.poi.poifs.filesystem.OfficeXmlFileException"问题?

java - 测试基于控制台的应用程序/程序 - Java

redis - Jedis Bad 文件描述符错误

c# - 通过应用程序洞察中的端到端事务跟踪 azure redis

redis - 我如何在redis数据库之间切换?

java - 如何判断jedis是否被添加到类路径中?

java - 为什么Spring Batch中没有调用分割流?

java - 如何在 Windows 上测试运行 Memurai

redis - 尝试调用 'replicate_commands'字段(一个nil值)