【发布时间】:2013-08-22 02:11:44
【问题描述】:
我们有以下用例:每次某个密钥过期时,我们都需要收到通知并根据它的值做一些事情。但是当 redis 触发 expired 事件时,当我们稍后尝试访问它时,密钥已经从数据库中删除,这当然是预期的。
现在有没有办法在条目过期后再次访问它?我猜不是。
所以第二个选项:有没有办法告诉 redis 在发送这些事件时发布整个值对象,而不仅仅是键?我想它可以通过 Lua 添加,但如果可能的话,我对更简单的选项感兴趣。对于其他事件,我们也需要这种行为,我们基本上需要所有通知来发布值,而不是键(我们可以在收到事件后执行 GET,但我们希望绕过第二次调用,主要是为了有一个原子过程,因为值可能在发布事件和执行GET 检索值之间发生了变化。
希望可以理解。也许我们看不到明显的,所以提前谢谢!
【问题讨论】:
-
Redis 2.8 到目前为止仍然是一个候选版本。如果您需要控制密钥过期通知,最好显式地实现它(不依赖于 2.8)。见stackoverflow.com/questions/11810020/…
-
那么 2.8 仍然是 RC 不是问题。问题是 Redis 使用键而不是条目的值发布事件。由于我们需要所有通知的这种行为,所以 2.6.那些,我们需要一种方法来告诉 Redis 在事件触发时给我们整个对象,而不是键。
-
我还是会使用基于 zset 的解决方案
-
我在 github 上创建了一个问题,因为我也需要这个功能 github.com/antirez/redis/issues/1876