首页 > 解决方案 > 使用正则表达式的事件 Redis 键空间通知

问题描述

我想在与提供的模式匹配的 redis 键上生成过期事件。我在节点 js 中使用 redis。

我曾尝试使用模式使用 redis psubscribe,但它并没有解决我的问题。

var redisClient = redis.createClient('redis://redis')
redisClient.config('set', 'notify-keyspace-events', 'KEA')
redisClient.psubscribe('__keyevent@0__:expired', '.*:timer')

redisClient.on('message', function (channel, key) { 
        console.log(`key ${key} channel ${channel}`)
})

标签: node.jsredis

解决方案


这不起作用的原因是当 redisClient 对象离开其范围时,该对象被释放。我在 .Net 中遇到了同样的问题,但后来我意识到我的对象被处理了一些,这就是它无法调用事件的原因。如果您可以共享代码片段,我们将解决此问题。

但是现在如果你尝试这个补丁,它会有所帮助。

var redisClient = redis.createClient('redis://redis')

全局声明此对象,它将起作用。


推荐阅读