jedis psubscribe вызывает зависание приложения
Я использую Redis 2.8.19 и Jedis 2.6.0
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
Приложение, кажется, зависает, когда я пытаюсь подписаться на канал. Поэтому я задаю вопрос: почему мое приложение зависает из-за этого?
2 ответа
Решение
Исправлено это путем установки для notify-keyspace-events значения Ex в redis.conf
и слушаю__keyevent@0__:*
"
jedis.psubscribe( new KeyExpiredListener(), "__keyevent@0__:*" );
psubscribe - операция блокировки Вы должны выполнить вызов psubscribe в отдельном потоке.