【问题标题】:Redis Keyspace Notifications and Key ExpirationRedis 密钥空间通知和密钥过期
【发布时间】:2014-04-01 11:49:25
【问题描述】:

关于 Redis Keyspace Notifications http://redis.io/topics/notifications 的文档在接近尾声时说,从数据库中删除了一个超时键

  • “当密钥被命令访问并发现已过期时。”
  • ..

问题:检索密钥是否足够,例如通过 KEYS *,还是我必须访问密钥所指的内容?

背景:我省略的第二个过程(上面的..)是一个概率过程,过期密钥的真正删除可能会延迟,从而导致EXPIRED事件的传递。我想确保将通知发送给订阅者,因此仅访问密钥是最简单的。

【问题讨论】:

  • 嗯。我懂了。 “KEYS 前缀:*”不是在运行时使用的好主意。但还有什么?

标签: redis


【解决方案1】:

Redis 实现了定期检查键是否过期的逻辑,并选择若干 (100) 个键并检查它们是否过期。

我的理解是,您担心按照上述逻辑存在属于尚未删除的过期密钥的事件。

为了避免这种情况,检查键是否存在会删除它们。应牢记 REDIS 调用的成本,因此应设计 LUA 脚本或批量命令,定期调用并迭代键列表并对其运行 EXISTS 命令,并在它们过期时自动删除。

要对此进行测试,您需要一个大型数据集。

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 2014-07-20
    • 2020-09-26
    • 2016-04-25
    • 1970-01-01
    • 2012-08-04
    • 2017-09-18
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多