我的Redis客户端订阅了__keyevent@0__:expired
次通知。它可以完美地工作,无论是当密钥自身到期(达到ttl)还是当我以大于0的秒数手动使它们到期时,如下所示:
EXPIRE myKey 1
订阅者会看到expired
事件,因此可以采取一些措施。
但是,如果我想手动删除,和键会通知订阅者,我会使用EXPIRE
并将0作为秒数:
EXPIRE myKey 0
密钥被删除,但订阅者没有收到任何内容。
我无法在文档中看到与此相关的任何内容。任何人都可以解释这种行为吗?
答案 0 :(得分:1)
通过查看源代码(expire.c,~252),设置到期值< = 0(或使用过去时间的EXPIREAT)会导致删除密钥而不是到期(和相应的DEL通知而不是EXPIRED事件。
这种行为确实没有记录,如果您可以提交一个PR来修复文档仓库(https://github.com/antirez/redis-doc),那将会很好。