2014-02-06 4 views
1

Я помогаю поддерживать приложение, которое использует Jedis для подключения к Sharded Redis.Sharded Jedis - Когда мне следует называть pool.destroy()?

Приложение, в котором я работаю, хранит экземпляр ShardedJedisPool в службе, чтобы повторно использовать его по нескольким запросам.

Я был reviewing the docs on Sharded Jedis и noticed the following comment:

Забыв pool.destroy держит соединение открытым до тех пор, пока таймаут достигнута.

Наше приложение не называет pool.destroy() в любом месте. Должны ли мы звонить pool.destroy() по каждому запросу? И я думаю, создавая новый пул по каждому запросу? Или мой бассейн может остаться в живых на всю мою службу и звонить только pool.destroy() в финализировать метод обслуживания?

ответ

2

Оба ShardedJedisPool и JedisPool предназначены для создания только один раз на весь срок службы приложения. И вы уничтожаете их, когда приложение отключается. Оба ShardedJedisPool и JedisPool являются потокобезопасными, означая, что безопасно использовать один и тот же экземпляр через потоки (в ваших запросах) и получить экземпляр ShardedJedis или Jedis. После использования ShardedJedis или Jedis вы должны вернуть их в пул, иначе пул будет исчерпан (в зависимости от того, как вы его настроили).

+0

Как применить этот ответ к веб-приложению с помощью Spring? Куда следует вызывать pool.destroy() в этом случае? – nsdiv

Смежные вопросы