Redis的過期策略和記憶體淘汰策略

2021-10-09 19:51:38 字數 1241 閱讀 2547

redis的過期策略

我們都知道,redis是key-value資料庫,我們可以設定redis中快取的key的過期時間。redis的過期策略就是指當redis中快取的key過期了,redis如何處理。

過期策略通常有以下三種:

定時過期:每個設定過期時間的key都需要建立乙個定時器,到過期時間就會立即清除。該策略可以立即清除過期的資料,對記憶體很友好;但是會占用大量的cpu資源去處理過期的資料,從而影響快取的響應時間和吞吐量。

惰性過期:只有當訪問乙個key時,才會判斷該key是否已過期,過期則清除。該策略可以最大化地節省cpu資源,卻對記憶體非常不友好。極端情況可能出現大量的過期key沒有再次被訪問,從而不會被清除,占用大量記憶體。

定期過期:每隔一定的時間,會掃瞄一定數量的資料庫的expires字典中一定數量的key,並清除其中已過期的key。該策略是前兩者的乙個折中方案。通過調整定時掃瞄的時間間隔和每次掃瞄的限定耗時,可以在不同情況下使得cpu和記憶體資源達到最優的平衡效果。

redis中同時使用了惰性過期和定期過期兩種過期策略。

redis的記憶體淘汰策略

redis的記憶體淘汰策略是指在redis的用於快取的記憶體不足時,怎麼處理需要新寫入且需要申請額外空間的資料。

volatile-lru:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,移除最近最少使用的key。

volatile-random:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,隨機移除某個key。

volatile-ttl:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,有更早過期時間的key優先移除。

allkeys-lru:當記憶體不足以容納新寫入資料時,在鍵空間中,移除最近最少使用的key。

allkeys-random:當記憶體不足以容納新寫入資料時,在鍵空間中,隨機移除某個key。

noeviction:當記憶體不足以容納新寫入資料時,新寫入操作會報錯。

總結

redis的記憶體淘汰策略的選取並不會影響過期的key的處理。記憶體淘汰策略用於處理記憶體不足時的需要申請額外空間的資料;過期策略用於處理過期的快取資料。

Redis的過期策略和記憶體淘汰策略

在redis中我們對於鍵可以通過expire key time設定生存時間,當time時間過後鍵就會過期,redis會採用過期策略對過期的鍵進行刪除。過期策略主要是在cpu和記憶體之間進行權衡。可以將cpu的處理效率作為側重點進行選擇策略,也可以將記憶體的容量作為側重點進行選擇策略實際上redis採...

Redis的過期策略和記憶體淘汰策略

我們都知道,redis是key value資料庫,我們可以設定redis中快取的key的過期時間。redis的過期策略就是指當redis中快取的key過期了,redis如何處理。過期策略通常有以下三種 redis中同時使用了惰性過期和定期過期兩種過期策略。redis的記憶體淘汰策略是指在redis的...

Redis的過期策略和記憶體淘汰策略

我們都知道,redis是key value資料庫,我們可以設定redis中快取的key的過期時間。redis的過期策略就是指當redis中快取的key過期了,redis如何處理。過期策略通常有以下三種 redis中同時使用了惰性過期和定期過期兩種過期策略。redis的記憶體淘汰策略是指在redis的...