Redis Keyspace通知和密钥到期

时间:2014-04-01 11:49:25

标签: redis

关于 Redis Keyspace通知 http://redis.io/topics/notifications的文档在其结尾附近说,从数据库中删除了超时密钥

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

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

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

1 个答案:

答案 0 :(得分:1)

Redis实现定期检查密钥到期的逻辑,并选择一个(100)个密钥并检查它们的到期时间。

我理解的是,您关注以下事实:如果存在上述逻辑,则会存在属于已过期密钥且尚未删除的事件。

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

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