jedis psubscribe导致应用程序挂起

时间:2015-02-13 16:23:43

标签: java redis hang jedis

我使用的是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 个答案:

答案 0 :(得分:0)

通过在redis.conf

中将notify-keyspace-events设置为Ex来解决此问题

并聆听“__keyevent@0__:*

jedis.psubscribe( new KeyExpiredListener(), "__keyevent@0__:*" );

答案 1 :(得分:0)

psubscribe是一种阻止操作。您需要在单独的线程上执行psubscribe调用。