【发布时间】:2018-05-08 18:20:15
【问题描述】:
在 Redis 版本:2.8.19 中是否会出现以下行为:
127.0.0.1:6380> set fooxyz 1
OK
127.0.0.1:6380> ttl fooxyz
(integer) -1
127.0.0.1:6380> expire fooxyz 3
(integer) 1
(1.98s)
127.0.0.1:6380> ttl fooxyz
(integer) 0
127.0.0.1:6380> ttl fooxyz
(integer) 0
(0.96s)
127.0.0.1:6380> ttl fooxyz
(integer) 0
127.0.0.1:6380> ttl fooxyz
(integer) 0
127.0.0.1:6380> get fooxyz
"1"
如您所见,我在键 fooxyz 上设置了过期时间,它达到 0,但实际上它从未被删除。在过期时间之后,我仍然能够检索到 fooxyz 的值。
这是可以预料的吗?它最终会被移除/垃圾收集吗?
当一些客户端试图访问它时,密钥就会主动过期, 发现key超时了。
然而,这里我有一个积极尝试检索密钥的示例,但它没有过期。
【问题讨论】:
-
查看这篇文章:stackoverflow.com/questions/45844944/… 和这篇文章github.com/antirez/redis/issues/2861 -- 基本上密钥过期在奴隶上的行为不同