Redis 密钥过期时的事件

Redis 密钥过期时的事件,redis,publishing,Redis,Publishing,我想知道redis中是否有允许我获取所有过期密钥的功能(我指的是某种事件,它让我有机会收回所有过期记录)。它的目的是将旧值保存到另一个数据库中。我听说使用发布机制是可能的,但谷歌无法帮助我们实现这一想法。当前的redis开发版本包含一个新功能:键空间通知。文件: 键空间通知允许客户端订阅发布/订阅通道,以便接收以某种方式影响Redis数据集的事件 可能接收到的事件示例如下: 影响给定键的所有命令 接收LPUSH操作的所有钥匙 数据库0中过期的所有密钥 希望它能很快稳定下来 顺便说一句,它在帮

我想知道redis中是否有允许我获取所有过期密钥的功能(我指的是某种事件,它让我有机会收回所有过期记录)。它的目的是将旧值保存到另一个数据库中。我听说使用发布机制是可能的,但谷歌无法帮助我们实现这一想法。

当前的redis开发版本包含一个新功能:键空间通知。文件:

键空间通知允许客户端订阅发布/订阅通道,以便接收以某种方式影响Redis数据集的事件

可能接收到的事件示例如下:

  • 影响给定键的所有命令
  • 接收LPUSH操作的所有钥匙
  • 数据库0中过期的所有密钥
希望它能很快稳定下来


顺便说一句,它在帮助您保存过期密钥的值方面不会很有用。触发过期事件时,该值已消失。

键空间通知生成的内置过期事件不准确。请参阅本手册的最后一节

Redis通过两种方式使与生存时间相关联的密钥过期:

  • 当通过命令访问密钥并发现密钥已过期时

  • 通过在后台查找过期密钥的后台系统, 以增量方式,以便能够同时收集从不存在的密钥 访问

  • 过期事件在访问密钥时生成,并且 被上述系统之一发现已过期,因此 不能保证Redis服务器能够生成 关键生存时间达到值时的过期事件 零。如果没有命令不断地以键为目标,那么会有很多 与TTL关联的键之间可能存在明显的延迟 密钥生存时间降至零的时间,以及密钥过期的时间 事件被生成


    要完全实现Accounte expire事件,您可能必须自己实现它。例如,通过使用按过期时间排序的排序列表(或AVL树),并连续读取列表尾部(取消队列)。如果读卡器发现到期时间尚未到达,它将休眠(到期时间-现在)。通过这种方式,精度可以控制在10毫秒以内。

    使用
    redis scheduler


    您可以找到它

    它与上述评论的链接不同。那是关于会话的。这篇文章是关于易变键的。“显著延迟”有多大?实现“你自己”似乎并不容易。我们可能还需要考虑在几个节点上的分布。它是否发布了“FLUHALALL”?@ SACHNVALMA NO的通知,实际上我不相信这个解决方案是行不通的,因为这个包使用了上述答案中提到的相同的特性,一旦密钥过期,“过期”事件。但是这个过程是懒惰的,所以它是不可靠的。