Redis通知:到期时获取密钥和值

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

我们有以下用例:每当某个密钥过期时,我们都需要根据其值来得到通知并采取措施。但是,当redis触发expired事件时,当我们稍后尝试访问它时,密钥已经从数据库中删除了,这当然是可以预期的。

现在,过期后,是否有办法再次访问该条目?我想不是。

第二个选择:是否有一种方法可以告诉Redis在发送这些事件时发布整个值对象,而不仅仅是发布键?我想可以通过Lua添加它,但是如果可能的话,我希望有一个更简单的选择。对于其他事件,我们也需要这种行为,我们基本上需要所有通知来发布值,而不是键(一旦收到事件,我们可以执行GET,但是我们想绕过第二个调用,主要是为了原子过程,因为在发布事件和执行GET以检索值之间,该值可能已更改)。

希望这是可以理解的。也许我们看不到明显的东西,所以先谢谢!!

我们有以下用例:每当某个密钥过期时,我们都需要根据其值来得到通知并采取措施。但是,当redis触发过期事件时,密钥已被删除...

database events redis
2个回答
38
投票

Eli链接到的功能使您可以在密钥过期时进行监听。但是,它不会为您提供密钥的值。此外,基于已提交的github问题,您似乎无法期望很快就可以构建此功能(https://github.com/antirez/redis/issues/1876)。我使用的解决方案是创建一个特殊的“影子”过期密钥,该密钥链接到您具有实际值的密钥。


1
投票

[如果您使用的是2.8,则可以试用this new feature(也在this page中引用)。它绝对不稳定,似乎没有经过良好测试,但是如果您使用的是2.8,则...

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