Redis 密钥过期通知

Bhu*_*hur 8 java redis java-8

有没有办法在 Redis 中获得关于密钥过期的可靠通知。据我从 Redis 文档中了解到,密钥过期通知是 Redis 不可靠的。

\n\n

根据文档,因为 Redis Pub/Sub 是 \xc2\xa0fire 并忘记 \xc2\xa0,目前如果您的应用程序需要 \xc2\xa0 事件的可靠通知 \xc2\xa0,也就是说,如果您的 Pub /子客户端断开连接,稍后重新连接,客户端断开连接期间传递的所有事件都会丢失。

\n\n

有人可以建议一种通过 Redis 获得可靠的密钥过期通知的方法,或者请建议 Java 中的其他数据库或机制来提供数据过期及其通知,以便在过期时对数据执行其他操作。

\n

Leo*_*llo 4

您可以通过让多个客户端订阅键空间过期通知来提高通知的可靠性。

您可以将过期通知与过期密钥的实际处理分离,这样您就可以只处理它们一次,并且还可以通过让密钥空间过期通知客户端执行简单的排队任务来提高可靠性。为此,您可以使用 Redis 中的其他数据结构,例如集合或排序集合(唯一值),甚至带有消费者组的Redis 流

另一种选择是使另一个密钥而不是实际密钥过期。请参阅有关密钥过期问题的事件。如果您需要过期密钥的值,这也很有帮助。

假设您的即将过期的密钥名为“foo”,当您创建它时,不会使其过期,而是创建另一个名为“foo:expire”的密钥并在其上设置 TTL。

...收到到期事件后,触发逻辑来存储和删除“旧”数据('foo')

通过这种方法,您可以包含从错过的通知中恢复的逻辑。