根据redis医生的说法:
EXPIREAT的效果和语义与过期相同,但它没有指定表示TTL (生存时间)的秒数,而是使用一个绝对Unix时间戳(自1970年1月1日起的秒)。过去的时间戳将立即删除密钥。
在设置过去的时间戳时,我得到的行为与每个文档完全相同,除非没有引发密钥过期事件。
redis> SET mykey "Hello"
"OK"
redis> EXISTS mykey
(integer) 1
redis> EXPIREAT mykey 1293840000
(integer) 1
redis> EXISTS mykey
(integer) 0当我在EXPIREAT命令中设置将来的时间戳时,它会抛出密钥过期事件。
因此,在通过EXPIREAT设置过去的时间戳时,不支持获取密钥过期事件吗?
发布于 2018-03-30 02:09:55
在你的情况下,没有过期事件。
那么,在通过EXPIREAT设置过去的时间戳时,不支持获取密钥过期事件吗?
事实上,这取决于。
如果您的Redis正在加载数据或它是一个从服务器,Redis将设置给定密钥的过期,并发布过期事件。否则,Redis将删除或取消对给定键的链接,并发布del事件。
所以,在你的例子中,你会得到一个del事件。
https://stackoverflow.com/questions/49567257
复制相似问题