Redis 快取過期處理與記憶體淘汰機制

2021-10-03 12:12:27 字數 746 閱讀 2351

計算機記憶體有限,越大越貴,redis的高併發高效能都是基於記憶體的,用硬碟的話gg。

設定了expire的key快取過期了,但是伺服器的記憶體還是會被占用,這是因為redis所基於的兩種刪除策略

redis有兩種策略:

(主動)定時刪除

• 定時隨機的檢查過期的key,如果過期則清理刪除。(每秒檢查次數在redis.conf中的hz配置)

(被動)惰性刪除

• 當客戶端請求乙個已經過期的key的時候,那麼redis會檢查這個key是否過期,如果過期了,則刪除,然後返回乙個nil。這種策 略對cpu比較友好,不會有太多的損耗,但是記憶體占用會比較高。

所以,雖然key過期了,但是只要沒有被redis清理,那麼其實記憶體還是會被占用著的。

記憶體佔滿了,可以使用硬碟,來儲存,但是沒意義,因為硬碟沒有記憶體快,會影響redis效能。

所以,當記憶體占用滿了以後,redis提供了一套快取淘汰機制:memory management

maxmemory:當記憶體已使用率到達,則開始清理快取

* noeviction:舊快取永不過期,新快取設定不了,返回錯誤

* volatile-lru:在那些設定了expire過期時間的快取中,清除最少用的舊快取,然後儲存新的快取

* volatile-random:在那些設定了expire過期時間的快取中,隨機刪除快取

* volatile-ttl:在那些設定了expire過期時間的快取中,刪除即將過期的

Redis 快取過期處理與記憶體淘汰機制

計算機記憶體有限,越大越貴,redis的高併發高效能都是基於記憶體的,用硬碟的話gg。設定了expire的key快取過期了,但是伺服器的記憶體還是會被占用,這是因為redis所基於的兩種刪除策略 redis有兩種策略 主動 定時刪除 被動 惰性刪除 所以,雖然key過期了,但是只要沒有被redis清...

Redis快取過期處理與記憶體淘汰機制

設定了expire的key快取過期了,但是伺服器的記憶體還是會被占用,這是因為redis所基於的兩種刪除策略redis有兩種策略 主動 定時刪除 定時隨機的檢查過期的key,如果過期則清理刪除。每秒檢查次數在redis.conf中的hz配置 被動 惰性刪除 當客戶端請求乙個已經過期的key的時候,那...

redis的快取過期策略與記憶體淘汰機制

redis採用了 定期刪除 惰性刪除 的過期策略 定期刪除 原理 定期刪除指的是redis預設每隔100ms就隨機抽取一些設定了過期時間的key,檢測這些key是否過期,如果過期了就將其刪掉。為什麼會選擇一部分,而不是全部 因為如果這是redis裡面有大量的key都設定了過期時間,那麼如果全部去檢測...