字段和值的 Redis 密钥空间通知订阅



我目前正在处理Redis过期事件

我的目标:在Redis中的数据已经过期之后,获取Value,Field以在下一个过程中做一些事情

所以我找到了Redis密钥空间通知功能允许客户端订阅Redis中的通道以接收影响重置中数据的事件,如Expire

所以我有一些示例代码:https://github.com/toygame/nodejs-redis-keyspace-notifications

subscriber.subscribe("__keyevent@0__:expired")
subscriber.on('message', async(channel, message) => {
// do somethings
console.log(message);       
})

Result : Key0

这项工作发现,但我得到的结果是唯一的密钥,我已经设置到redis和过期的

我已经做了一些研究https://medium.com/nerd-for-tech/redis-getting-notified-when-a-key-is-expired-or-changed-ca3e1f1c7f0a

但它只找到了一个事件,也许我可以得到结果,但不是值,字段,我期望

他们无论如何都能得到那些值和字段吗?

FYI。文件https://redis.io/topics/notifications

根据此更新https://stackoverflow.com/a/42556450/11349357

密钥空间通知不报告值,只有密钥的名称和/或执行的命令包含在发布的消息中。其主要依据是Redis值可能会变得相当大。

如果你真的真的需要这种行为,那么实际上这很容易。因为密钥空间通知使用Pub/Sub消息,所以在每次相关操作之后,您可以自己调用PUBLISH,并使用您感兴趣的信息。

看起来我不能使用这个Redis密钥空间,但我必须在我自己的上发布它

您可以使用RedisGears来处理密钥空间通知并获取密钥和值。

您可以用python编写处理代码,并在Redis中注册。例如捕获每个密钥空间事件并存储到流

GearsBuilder() 
.foreach(lambda x: execute('XADD', "notifications-stream", '*', *sum([[k,v] for k,v in x.items()],[]))) 
.register(prefix="person:*", eventTypes=['hset', 'hmset'], mode='sync')

您可以在此处阅读有关此示例的更多信息:https://oss.redis.com/redisgears/examples.html#reliable-密钥空间通知

相关内容

  • 没有找到相关文章

最新更新