Node.js 使用正则表达式的事件Redis键空间通知

Node.js 使用正则表达式的事件Redis键空间通知,node.js,redis,Node.js,Redis,我想在redis密钥上生成与提供的模式匹配的expire事件。我在NodeJS中使用redis 我曾尝试使用redis PSU订阅模式,但它并不能解决我的问题 var redisClient = redis.createClient('redis://redis') redisClient.config('set', 'notify-keyspace-events', 'KEA') redisClient.psubscribe('__keyevent@0__:expired', '.*:time

我想在redis密钥上生成与提供的模式匹配的expire事件。我在NodeJS中使用redis

我曾尝试使用redis PSU订阅模式,但它并不能解决我的问题

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}`)
})

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

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

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

全局声明此对象,它将工作

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

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

var redisClient = redis.createClient('redis://redis')
全局声明此对象,它将工作