日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Redis的數據刪除策略

作者:不隨意的風 更新時間: 2022-09-05 編程語言

Redis中可以設置數據的生命周期,那么當數據過期時,Redis是怎么對這些數據進行刪除的呢?

Redis有三種刪除策略:

1.定時刪除:創建一個定時器,當key過期時,定時器立即刪除過期數據。這樣做節約內存,但是cpu負荷高,由于redis時單線程的,在訪問量大時,甚至會引起線程阻塞。

2.惰性刪除:?數據到達過期時間,不做處理。等下次訪問該數據時,如果未過期,返回數據。如果已過期,刪除,返回不存在。這樣CPU壓力會降低,但是內存壓力很大,長期有過期數據占用內存。

3.定期刪除:這種策略平衡了前兩種極端的方案,Redis啟動服務器初始化時,讀取配置server.hz的值,默認為10.每秒執行server.hz次的serverCron()中的方法,周期性的輪詢redis庫中的時效型數據,采用隨機抽取的策略,利用過期數據占比的方式控制刪除頻度(過期數據的比例不超過25%)。

定期刪除的優點在于CPU性能占用設置有峰值,檢測頻度可自定義,內存壓力和CPU壓力都不大。但是僅僅是通過給key設置時長還是有問題的,因為還是有很多過期key堆積在內存中,容易引起Out Of Memory。那么如何解決這方面的問題呢?就是Redis的內存淘汰機制(逐出算法)

Redis使用內存存儲數據,在執行沒一個命令前,會調用FreeMemoryIFNeeded()檢查內存是否充足,如果內存不滿足新加入數據的最低存儲要求,redis要刪除一些數據為清理空間。清理的策略被稱為逐出算法:

Redis目前有8種逐出策略:

1.volatile-lru:從已設置過期時間的數據中,挑選最近最少使用的數據淘汰。(針對時間)

2.volatile-lfu:從已設置過期時間的數據中,挑選最近使用次數最少的數據淘汰。(針對訪問頻率)

3.volatile-ttl:從已設置過期時間的數據中,挑選快要過期的數據。

4.volatile-random:從已設置過期時間的數據中,任意選擇數據淘汰。

5.allkeys-lru:在所有的key中,移除最近最少使用的key。

6.allkeys-lfu:在所有的key中,移除最近使用次數最少的key。

7.allkeys-random:任意挑選數據淘汰。

8.no-eviction:禁止驅逐數據(Redis4.0默認策略)。

需要注意的時,逐出過程并不是100%的能夠清理出足夠的空間,如果不成功反復執行,在所有數據都嘗試完畢后,如果還是不能滿足內存清理的要求,將會出現錯誤信息。

(error) OOM command not allowed when used memory >'maxmemory'

處理數據刪除,需要注意的還有緩存的一些問題。

分別有

緩存預熱:在系統啟動前,提交將相關的緩存數據直接加載到緩存系統,避免在用戶請求的時候,先查數據庫,然后再緩存數據的問題,

緩存雪崩:大面積key同一時間失效,所有請求直接落在數據庫上,造成數據庫壓力過大,可能導致服務器宕機。

解決方案:1.更多的頁面靜態化處理;

? ? ? ? ? ? ? ? ? 2.構造多級緩存

? ? ? ? ? ? ? ? ? 3.災難預警機制

? ? ? ? ? ? ? ? ? 4.限流,降級(短時間犧牲客戶體驗,限制一部分請求,降低服務器壓力,待業務低速運轉后,再逐步放開)

? ? ? ? ? ? ? ? ? 5.刪除策略進行切換(lru->lfu)

? ? ? ? ? ? ? ? ? 6.數據分類,有效期策略調整(稀釋集中到期的key的數量)

? ? ? ? ? ? ? ? ? 7.超熱數據 永久key

緩存擊穿:某個熱點key過期,大量請求落在服務器。

解決方案:1.二級緩存

? ? ? ? ? ? ? ? ? ?2.設置永久key

? ? ? ? ? ? ? ? ? ?3.延長過期時間,待訪問量降低后移除

緩存穿透:redis出現大面積未命中(請求的key不在redis中,直接落在服務器)

?解決方案:1.布隆過濾器

? ? ? ? ? ? ? ? ? ? 2.緩存null

? ? ? ? ? ? ? ? ? ? 3.做好參數校驗

? ? ? ? ? ? ? ? ? ? 4.實時監控(redis的命中率)

? ? ? ? ? ? ? ? ? ? 5.key加密(不滿足直接駁回)

? ?

原文鏈接:https://blog.csdn.net/weixin_71419462/article/details/126432530

欄目分類
最近更新