預計在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
是的,這很奇怪,我仍然無法在可寫的奴隸中重新編寫它。 –