【问题标题】:Redis key expire event through EXPIREAT command with past timestamp通过带有过去时间戳的 EXPIREAT 命令的 Redis 键过期事件
【发布时间】:2018-09-09 01:43:39
【问题描述】:

根据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设置过去时间戳的时候获取key过期事件?

【问题讨论】:

    标签: redis spring-data-redis


    【解决方案1】:

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

    那么是不是不支持在通过 EXPIREAT 设置过去的时间戳时获取 key 过期事件?

    事实上,这取决于。

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

    所以,在你的情况下,你会得到一个 del 事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 2018-09-08
      • 2021-03-03
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多