首頁  >  文章  >  資料庫  >  redis怎麼設定key的有效期限

redis怎麼設定key的有效期限

WBOY
WBOY轉載
2023-05-28 19:29:483893瀏覽

redis設定key的有效期限

Key指令

設定key的過期時間。

查詢目前所有的key

redis怎麼設定key的有效期限

  • #expire key second:設定key的過期時間

redis怎麼設定key的有效期限

若執行ttl key 顯示為-2 則表示改值不存在快取中

redis怎麼設定key的有效期限

##顯示為-1則是持久化的(不會失效) 

redis怎麼設定key的有效期限

若設定了失效時間那麼就會顯示剩餘的失效時間

redis怎麼設定key的有效期限

#完全理解redis有效期限問題

EXPIRE key seconds

起始版本:1.0.0

時間複雜度:O(1)

傳回值:1 如果成功設定過期時間;0 如果key不存在或無法設定過期時間。

為給定 key設定生存時間,當 key過期時(生存時間為 0),它會被自動刪除。

1.過期時間跟著key走,與值無關

Redis中,具有過期時間的鍵被稱為「易失的鍵」(volatile key)。過期時間可以透過使用DEL指令來刪除整個key來移除,或者被SET和GETSET指令覆寫(overwrite),這意味著,如果一個指令只是修改(alter)一個帶過期時間的key的值而不是用一個新的key值來代替(replace)它的話,那麼過期時間不會被改變。比方說,對一個 key執行 INCR指令,對一個清單進行 LPUSH指令,或是對一個雜湊表執行 HSET指令,這類操作不會修改 key本身的過期時間。

2.設定永久有效期限

使用PERSIST指令可以清除逾時,使其變成一個永久的key。

3.rename指令對有效期影響

如果key被RENAME指令修改,相關的逾時時間會轉移到新key上面。

如果key被RENAME指令修改,例如原來就存在Key_A,然後呼叫RENAME Key_B Key_A指令,這時不管原來Key_A是永久的還是設定為超時的,都會由Key_B的有效期狀態覆蓋。

4.刷新過期時間

對已經有過期時間的key執行EXPIRE操作,將會更新它的過期時間。

5.過期精度

在 Redis 2.4 及以前版本,過期期時間可能不是十分準確,有0-1秒的誤差。

從 Redis 2.6 起,過期時間誤差縮小到0-1毫秒。

6.外界因素對過期時間影響

自Redis 2.6版本以來,Keys的過期時間以毫秒為單位使用Unix時間戳進行儲存。這意味著即使Redis實例不可用,時間也是一直在流逝的。

要想過期的工作處理好,電腦必須採用穩定的時間。當你在兩台時間不同步的電腦之間同步RDB檔案時,會發生有趣的現象:所有的按鍵都會在載入時過期。

即使正在運作的實例也會檢查電腦的時鐘,例如如果你設定了一個key的有效期是1000秒,然後設定你的電腦時間為未來2000秒,這時key會立即失效,而不是等1000秒之後。

7.Redis如何淘汰過期的keys

Redis keys過期有兩種方式:被動和主動方式。

當一些客戶端嘗試存取它時,key會被發現並主動的過期。

當然,這樣是不夠的,因為有些過期的keys,永遠不會訪問他們。為了確保keys在預定時間內過期,應定期進行隨機測試並設定過期時間。所有這些過期的keys將會刪除。

具體就是Redis每秒10次做的事情:

1).測試隨機的20個keys進行相關過期檢測。

2).刪除所有已經過期的keys。

3).如果有多於25%的keys過期,重複步奏1.

這是一個平凡的機率演算法,基本上的假設是,我們的樣本是這個密鑰控件,並且我們不斷重複過期檢測,直到過期的keys的百分比低於25%,這意味著,在任何給定的時刻,最多會清除1/4的過期keys。

8.在複製AOF檔時如何處理過期

為了獲得正確的行為而不犧牲一致性,當一個key過期,DEL將會隨著AOF文字一起合成到所有附加的slaves。這種方法在master實例中是集中的,且不存在一致性錯誤的可能。

然而,當slaves連接到master時,不會獨立過期keys(會等到master執行DEL指令),他們任然會在資料集裡面存在,所以當slave當選為master時淘汰keys會獨立執行,然後成為master。

以上是redis怎麼設定key的有效期限的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除