2015-02-13 1 views
0

Я использую REDIS 2.8.19 и 2.6.0 JedisJedis psubscribe вызывает приложение, чтобы повесить

pool = new JedisPool(new JedisPoolConfig(), "ip", 6379, 0); 
     System.out.println("test2"); 
     Jedis jedis = pool.getResource(); 
     jedis.psubscribe(new KeyExpiredListener(), "__key*__:*"); 
     pool.returnResource(jedis); 
     System.out.println("test3"); 

выход:

test2 

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

+0

Пожалуйста, не заставляйте людей угадывать, каков ваш вопрос. – tjd

+0

Ну, мне было интересно, что приведет к зависанию приложения. –

+0

Добавьте то, что вы просите в свой вопрос. –

ответ

0

Fixed, установив уведомят-пространство ключей-события в Ex в redis.conf

и слушать "[email protected]__:*"

jedis.psubscribe(new KeyExpiredListener(), "[email protected]__:*"); 
0

psubscribe является блокирующей операцией. Вам нужно выполнить вызов psbscribe в отдельном потоке.