Redis 設定過期時間 記憶體淘汰機制

2021-09-24 22:02:03 字數 803 閱讀 8256

redis中有個設定時間過期的功能,即對儲存在 redis 資料庫中的值可以設定乙個過期時間。作為乙個快取資料庫,這是非常實用的。如我們一般專案中的 token 或者一些登入資訊,尤其是簡訊驗證碼都是有時間限制的,按照傳統的資料庫處理方式,一般都是自己判斷過期,這樣無疑會嚴重影響專案效能。

我們 set key 的時候,都可以給乙個 expire time,就是過期時間,通過過期時間我們可以指定這個 key 可以存活的時間。

如果假設你設定了一批 key 只能存活1個小時,那麼接下來1小時後,redis是怎麼對這批key進行刪除的?

redis預設是每隔 100ms 就隨機抽取一些設定了過期時間的key,檢查其是否過期,如果過期就刪除。注意這裡是隨機抽取的。

為什麼要隨機呢?你想一想假如 redis 存了幾十萬個 key ,每隔100ms就遍歷所有的設定過期時間的 key 的話,就會給 cpu 帶來很大的負載!

定期刪除可能會導致很多過期 key 到了時間並沒有被刪除掉。所以就有了惰性刪除。

假如你的過期 key,靠定期刪除沒有被刪除掉,還停留在記憶體裡,除非你的系統去查一下那個 key,才會被redis給刪除掉。這就是所謂的惰性刪除

如果僅僅通過設定過期時間還有問題。

使用redis 記憶體淘汰機制解決這個問題

redis 記憶體淘汰機制(mysql裡有2000w資料,redis中只存20w的資料,如何保證redis中的資料都是熱點資料?)

redis 提供 6種資料淘汰策略:

4.0版本後增加以下兩種:

WP PostViews外掛程式顯示設定時間內熱門文章

不知道出於什麼原因,1.30後的wp postviews外掛程式取消了原先存在的get timespan most viewed函式,這也是最近在網上得知的,因為最近有心情修改主題 外掛程式,發現小子的部落格上面這個外掛程式提供的小工具在邊欄的顯示內容幾個月都不怎麼變,原因很簡單,設定的是瀏覽最多的...

Redis 設定過期時間

redis 中有個設定時間過期的功能,即對儲存在 redis 資料庫中的值可以設定乙個過期時間。作為乙個快取資料庫,這是非常實用的。比如,一般專案中的 token 或是 cookie 資訊,尤其是簡訊驗證碼,都是有時間限制的,按照傳統的資料庫處理方式,一般都是自己判斷過期,這樣無疑會嚴重影響專案效能...

Redis的過期策略 記憶體淘汰機制

redis採用的是定期刪除 惰性刪除策略。過期策略 定期刪除 惰性刪除 定期刪除,redis預設每個100ms檢查,是否有過期的key,有過期key則刪除。需要說明的是,redis不是每個100ms將所有的key檢查一次,而是隨機抽取進行檢查。因此,如果只採用定期刪除策略,會導致很多key到時間沒有...