Redis 密钥过期时的事件
我想知道redis中是否有允许我获取所有过期密钥的功能(我指的是某种事件,它让我有机会收回所有过期记录)。它的目的是将旧值保存到另一个数据库中。我听说使用发布机制是可能的,但谷歌无法帮助我们实现这一想法。当前的redis开发版本包含一个新功能:键空间通知。文件: 键空间通知允许客户端订阅发布/订阅通道,以便接收以某种方式影响Redis数据集的事件 可能接收到的事件示例如下:Redis 密钥过期时的事件,redis,publishing,Redis,Publishing,我想知道redis中是否有允许我获取所有过期密钥的功能(我指的是某种事件,它让我有机会收回所有过期记录)。它的目的是将旧值保存到另一个数据库中。我听说使用发布机制是可能的,但谷歌无法帮助我们实现这一想法。当前的redis开发版本包含一个新功能:键空间通知。文件: 键空间通知允许客户端订阅发布/订阅通道,以便接收以某种方式影响Redis数据集的事件 可能接收到的事件示例如下: 影响给定键的所有命令 接收LPUSH操作的所有钥匙 数据库0中过期的所有密钥 希望它能很快稳定下来 顺便说一句,它在帮
- 影响给定键的所有命令
- 接收LPUSH操作的所有钥匙
- 数据库0中过期的所有密钥
顺便说一句,它在帮助您保存过期密钥的值方面不会很有用。触发过期事件时,该值已消失。键空间通知生成的内置过期事件不准确。请参阅本手册的最后一节 Redis通过两种方式使与生存时间相关联的密钥过期:
要完全实现Accounte expire事件,您可能必须自己实现它。例如,通过使用按过期时间排序的排序列表(或AVL树),并连续读取列表尾部(取消队列)。如果读卡器发现到期时间尚未到达,它将休眠(到期时间-现在)。通过这种方式,精度可以控制在10毫秒以内。使用
redis scheduler
您可以找到它它与上述评论的链接不同。那是关于会话的。这篇文章是关于易变键的。“显著延迟”有多大?实现“你自己”似乎并不容易。我们可能还需要考虑在几个节点上的分布。它是否发布了“FLUHALALL”?@ SACHNVALMA NO的通知,实际上我不相信这个解决方案是行不通的,因为这个包使用了上述答案中提到的相同的特性,一旦密钥过期,“过期”事件。但是这个过程是懒惰的,所以它是不可靠的。