怎么做自己的導(dǎo)航網(wǎng)站營銷qq下載
Redis 數(shù)據(jù)過期及淘汰策略
過期策略
定時過期
在設(shè)置key
?的過期時間的同時,為該key
?創(chuàng)建一個定時器,讓定時器在key
?的過期時間來臨時,對key進(jìn)行刪除。到過期時間就會立即清除。該策略可以立即清除過期的數(shù)據(jù),對內(nèi)存很友好,但是會占用大量的CPU
?資源去處理過期的數(shù)據(jù),從而影響緩存的響應(yīng)時間和吞吐量。
惰性過期
只有當(dāng)訪問一個key
?時,才會判斷該key是否已過期,過期則清除。該策略可以最大化地節(jié)省CPU
?資源,卻對內(nèi)存非常不友好。極端情況可能出現(xiàn)大量的過期key
?沒有再次被訪問,從而不會被清除,占用大量內(nèi)存。
定期過期
每隔一定的時間,會掃描一定數(shù)量的數(shù)據(jù)庫的expires
?字典中一定數(shù)量的key
?,并清除其中已過期的key
?。該策略是前兩者的一個折中方案。通過調(diào)整定時掃描的時間間隔和每次掃描的限定耗時,可以在不同情況下使得CPU
?和內(nèi)存資源達(dá)到最優(yōu)的平衡效果。
淘汰策略
Redis的內(nèi)存淘汰策略是指在Redis的用于緩存的內(nèi)存不足時,如何申請新的內(nèi)存。
- ?
noeviction
?:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,新寫入操作會報錯。 - ?
allkeys-lru
?:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在鍵空間中,移除最近最少使用的key - ?
allkeys-random
?:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在鍵空間中,隨機(jī)移除某個key。 - ?
volatile-lru
?:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在設(shè)置了過期時間的鍵空間中,移除最近最少使用的key。 - ?
volatile-random
?:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在設(shè)置了過期時間的鍵空間中,隨機(jī)移除某個key。 - ?
volatile-ttl
?:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時,在設(shè)置了過期時間的鍵空間中,有更早過期時間的key優(yōu)先移除。
總結(jié)
過期策略選擇
惰性刪除、定期刪除組合模式。
淘汰策略選擇
?allkeys-lru
?