gpt4 book ai didi

redis - 使用java获取redis中的事件名称

转载 作者:可可西里 更新时间:2023-11-01 11:25:28 24 4
gpt4 key购买 nike

如果我在redis中监听事件,就像下面的命令一样,

$ redis-cli --csv psubscribe '__key*__:*'
Reading messages... (press Ctrl-C to quit)

我可以得到类似的东西

"pmessage","__key*__:*","__keyspace@0__:exipre","xxx"
"pmessage","__key*__:*","__keyevent@0__:expired","xxx"

那么,当我使用spring-data-redis监听redis中的事件时,如何获取具体的事件名称(如keyspace@0:expire),这样不仅可以获取到key像“xxx”这样的值,但也会得到像 expireexpired 这样的事件,因为我不想像下面这样分别构建两个主题监听器:

RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
//one for expire
container.addMessageListener(listenerAdapter1, new PatternTopic(//topic 1));
//another for expired
container.addMessageListener(listenerAdapter2, new PatternTopic(//topic 2));

最佳答案

您可能想看看订阅 __keyevent@*KeyspaceEventMessageListener,然后只实现 doHandleMessageMessage.getChannel() 保存有关事件类型的原始信息,例如 __keyevent@0__:expired

KeyspaceEventMessageListener eventListener = new KeyspaceEventMessageListener(container) {

@Override
protected void doHandleMessage(Message message) {

String channelInfo = new String(message.getChannel()); // __keyevent@0__:expired
// ...
}
};

关于redis - 使用java获取redis中的事件名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45914087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com