EXPIRE密钥0

时间:2016-11-16 15:45:24

标签: events redis

我的Redis客户端订阅了__keyevent@0__:expired次通知。它可以完美地工作,无论是当密钥自身到期(达到ttl)还是当我以大于0的秒数手动使它们到期时,如下所示:

EXPIRE myKey 1

订阅者会看到expired事件,因此可以采取一些措施。

但是,如果我想手动删除键会通知订阅者,我会使用EXPIRE并将0作为秒数:

EXPIRE myKey 0

密钥被删除,但订阅者没有收到任何内容。

我无法在文档中看到与此相关的任何内容。任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:1)

通过查看源代码(expire.c,~252),设置到期值< = 0(或使用过去时间的EXPIREAT)会导致删除密钥而不是到期(和相应的DEL通知而不是EXPIRED事件。

这种行为确实没有记录,如果您可以提交一个PR来修复文档仓库(https://github.com/antirez/redis-doc),那将会很好。