2014-04-01 82 views
1

的文档约Redis的KEYSPACE通知http://redis.io/topics/notifications说接近尾声,与超时的关键是从数据库中删除Redis的KEYSPACE声明和密钥过期

  • “当密钥由命令访问,是发现已过期。“
  • ...

问:是否足以检索非常关键的,例如通过KEYS *,还是我必须访问密钥引用的内容?

背景:第二处理我省略(将..以上)是概率的过程,以及过期密钥的真实缺失可能被延迟,因此EXPIRED事件的递送。我想确保通知给订户,所以只需访问密钥就会更容易。

+0

嗯。我懂了。 “KEYS prefix:*”在运行时不是一个好主意。但是还有什么? – Falko

回答

1

Redis的实现对期满的键定期检查的逻辑和拾取键的数目(100),并检查他们的期满。

我的理解是,你的关心与上述逻辑也就存在属于还没有被删除过期的按键事件的事实。

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

为了测试这一点,你需要一个大的数据集。