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 调用。