Redis 密钥过期通知



有没有办法在 Redis 中对密钥到期进行可靠的通知。正如我从 Redis 文档中了解到的那样,密钥到期通知是 Redis 是不可靠的。

根据文档,由于 Redis Pub/Sub 已触发并忘记当前,因此如果您的应用程序需要可靠的事件通知,即如果您的 Pub/Sub 客户端断开连接并稍后重新连接,则在客户端断开连接期间传递的所有事件都将丢失,因此无法使用此功能。

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

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

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

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

假设您的待过期密钥称为"foo",当您创建它时 不要使它过期,而是创建另一个名为"foo:expire"的密钥,并且 在其上设置 TTL。

。 获取到期事件后,触发逻辑以存储和删除 "旧"数据("foo"(

在此方法中,可以包含从错过的通知中恢复的逻辑。

最新更新