建設(shè)企業(yè)網(wǎng)站目的查看域名每日ip訪問量
刪除策略就是針對已過期數(shù)據(jù)的處理策略。
針對過期數(shù)據(jù)要進行刪除的時候都有哪些刪除策略呢?
- 1.定時刪除
- 2.惰性刪除
- 3.定期刪除
?1、立即刪除
當(dāng)key設(shè)置有過期時間,且過期時間到達時,由定時器任務(wù)立即執(zhí)行對鍵的刪除操作。
- 優(yōu)點:節(jié)約內(nèi)存,到時就刪除,快速釋放掉不必要的內(nèi)存占用
- 缺點:CPU壓力很大,無論CPU此時負載量多高,均占用CPU,會影響redis服務(wù)器響應(yīng)時間和指令吞吐量
- 總結(jié):用處理器性能換取存儲空間(拿時間換空間)
?2、惰性刪除
數(shù)據(jù)到達過期時間,不做處理。等下次訪問該數(shù)據(jù)時,判斷
1.?如果未過期,則返回數(shù)據(jù)
2.?發(fā)現(xiàn)已過期,刪除,返回不存在
- 優(yōu)點:節(jié)約CPU性能,發(fā)現(xiàn)必須刪除的時候才刪除
- 缺點:內(nèi)存壓力很大,出現(xiàn)長期占用內(nèi)存的數(shù)據(jù)
- 總結(jié):用存儲空間換取處理器性能(拿空間換時間)
3、定期刪除?
-
Redis啟動服務(wù)器初始化時,讀取配置server.hz的值,默認為10
-
每秒鐘執(zhí)行server.hz次serverCron()-------->databasesCron()--------->activeExpireCycle()
-
activeExpireCycle()對每個redis庫逐一進行檢測,每次執(zhí)行耗時:250ms/server.hz
-
對某個庫檢測時,隨機挑選W個key檢測
? ? ? ? (1)如果key超時,刪除key
? ? ? ? (2)如果一輪中刪除的key的數(shù)量>W*25%,循環(huán)該過程
? ? ? ? (3)如果一輪中刪除的key的數(shù)量≤W25%,檢查下一個庫,在0-15庫之間循環(huán)
???????????W取值=ACTIVEEXPIRECYCLE_LOOKUPSPERLOOP屬性值