jedis psubscribe 导致应用挂起
jedis psubscribe causes application to hang
我正在使用 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
当我尝试订阅频道时,应用程序似乎挂起。所以我提出的问题是为什么我的应用程序因此而挂起。
通过在 redis.conf
中将 notify-keyspace-events 设置为 Ex 解决了这个问题
并收听“__keyevent@0__:*
”
jedis.psubscribe( new KeyExpiredListener(), "__keyevent@0__:*" );
psubscribe 是一个阻塞操作。您需要在单独的线程上执行 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
当我尝试订阅频道时,应用程序似乎挂起。所以我提出的问题是为什么我的应用程序因此而挂起。
通过在 redis.conf
中将 notify-keyspace-events 设置为 Ex 解决了这个问题并收听“__keyevent@0__:*
”
jedis.psubscribe( new KeyExpiredListener(), "__keyevent@0__:*" );
psubscribe 是一个阻塞操作。您需要在单独的线程上执行 psubscribe 调用。