通过带有过去时间戳的EXPIREAT命令,Redis键到期事件

时间:2018-03-30 01:28:40

标签: redis spring-data-redis

根据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设置过去的时间戳时,是否不支持获取密钥到期事件?

1 个答案:

答案 0 :(得分:0)

在您的情况下,没有过期事件。

  

因此,在通过EXPIREAT设置过去的时间戳时,是否不支持获取密钥到期事件?

事实上,这取决于。

如果您的Redis正在加载数据或它是从属服务器,则Redis会为给定密钥设置过期,并发布过期事件。否则,Redis会删除或取消链接给定的密钥,并发布 del 事件。

因此,在您的情况下,您将获得 del 事件。