预计在Redis的下列行为,版本:2.8.19:Redis的关键设置为过期不实际删除
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的价值。
这是预期的吗?它最终会被删除/垃圾收集?
的关键是积极过期只是当一些客户端试图访问它, ,关键是发现超时。
但在这里我有一个积极尝试检索密钥的例子,它不会过期。
你是否同意反复得到一个TTL值为0的关键是怪异而且 - 这是对被役使的高手,但一个Redis的过程不是只读的,这意味着我也可以写给奴隶,你认为这可能是相关的吗? – esilver
是的,这很奇怪,我仍然无法在可写的奴隶中重新编写它。 –