根据redis doc:
EXPIREAT与EXPIRE具有相同的效果和语义,但不是 指定代表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
设置过去的时间戳时,是否不支持获取密钥到期事件?
答案 0 :(得分:0)
在您的情况下,没有过期事件。
因此,在通过EXPIREAT设置过去的时间戳时,是否不支持获取密钥到期事件?
事实上,这取决于。
如果您的Redis正在加载数据或它是从属服务器,则Redis会为给定密钥设置过期,并发布过期事件。否则,Redis会删除或取消链接给定的密钥,并发布 del 事件。
因此,在您的情况下,您将获得 del 事件。