我使用的是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
当我尝试订阅频道时,该应用似乎已挂起。所以我提出的问题是为什么我的申请因此而悬挂。
答案 0 :(得分:0)
通过在redis.conf
中将notify-keyspace-events设置为Ex来解决此问题并聆听“__keyevent@0__:*
”
jedis.psubscribe( new KeyExpiredListener(), "__keyevent@0__:*" );
答案 1 :(得分:0)
psubscribe是一种阻止操作。您需要在单独的线程上执行psubscribe调用。