1

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

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

我正在查看 Sharded Jedis 上的文档注意到以下评论

忘记 pool.destroy 会保持连接打开,直到达到超时。

我们的应用程序不会在任何地方调用pool.destroy()。我们应该在每个请求上调用pool.destroy()吗?我猜,在每个请求上也创建一个新池?或者我的池可以在我的服务生命周期内保持活动状态,并且只在服务的finalize方法中调用pool.destroy()

4

1 回答 1

2

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

于 2014-02-06T22:30:44.953 回答