jedis psubscribe导致应用程序挂起

问题描述 投票:0回答:2

我正在使用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

当我尝试订阅频道时,该应用似乎挂起了。所以我提出的问题是为什么我的申请因此而悬挂。

java redis hang jedis
2个回答
0
投票

通过在redis.conf中将notify-keyspace-events设置为Ex来解决此问题

并听“__keyevent@0__:*

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.