redis快取穿透和雪崩
指的是乙個非常熱的key 一直有非常大流量的併發訪問,當快取中key失效過期的瞬間,所有的訪問量瞬間擊破快取,所有請求瞬間全部訪問到資料庫,
例: 微博某個熱搜,劉畊巨集直播,
大量的訪問量直接訪問到後端資料庫 同時資料庫還要會寫到快取,導致資料庫壓力很大甚至崩潰。
決方案:
1.熱key快取永不過期 ,防止快取過期打到資料庫
2.分布式鎖:乙個執行緒獲取,其他執行緒等待,防止後端資料庫崩潰
當使用者訪問乙個資料 快取中沒有,快取沒命中,所以向持久層資料庫查詢
也沒有 本次查詢失敗,但是當大量沒用命中訪問量都去訪問資料庫持久層的時候,資料庫壓力很大 快取也就失效了 相當於快取穿透。
例:秒殺活動,雙十一 618購物街,短時內大量點選率搶購數量有限的商品,會出現大量查詢失敗,
解決辦法:
1.布隆過濾器 、
2.儲存空物件:資料庫沒找到後,redis中臨時存乙個空物件(空物件多了也會占用記憶體)
快取中的key都是有失效時間的 ,快取雪崩指的是 某個時間點,快取集體失效,redis快取失去了作用。
第二種情況是 快取伺服器down機 自然形成了雪崩的情況。
例: 雙十一商品 都是提前載入到快取,到凌晨開始搶購的時候,快取都過期了了當雪崩的時候沒有一片雪花是無辜的,每個key失效都不是問題,但是所有key集體失效,會造成所有的訪問直接打到了持久層資料庫,資料庫訪問呼叫暴增。
解決方案:
1.redis高可用:多設定幾台redis
2.限流降級:快取失效後,通過加鎖或者佇列來控制讀資料庫寫快取的數量
3.資料預熱:大量資料載入到快取中,根據不同訪問量來設定不同過期時間,防止大面積集體過期
Redis穿透 擊穿和雪崩
概念 key對應的資料在資料來源並不存在,每次針對此key的請求從快取獲取不到,請求都會到資料來源,從而可能壓垮資料來源。比如用乙個不存在的使用者id獲取使用者資訊,不論快取還是資料庫都沒有,若黑客利用此漏洞進行攻擊可能壓垮資料庫。解決方案 乙個一定不存在快取及查詢不到的資料,由於快取是不命中時被動...
redis 雪崩,穿透,擊穿
雪崩 同一時間key大面積失效 多出現在定時任務重新整理時 處理方案 1,把每個key的失效時間都加乙個隨機值 2,設定熱點資料永不過期,有更新操作就更新快取 3,如果時集群,將熱點資料均勻分布在不同的redis庫仲 穿透 快取和資料庫仲都沒有的資料時,使用者不斷的發起請求 處理方案 1,在介面層增...
Redis雪崩 穿透 擊穿
1 定義 1.快取穿透是指查詢乙個一定不存在的資料,由於快取不命中,接著查詢資料庫也無法查詢出結果,2.雖然也不會寫入到快取中,但是這將會導致每個查詢都會去請求資料庫,造成快取穿透 2 解決方法 布隆過濾 1.對所有可能查詢的引數以hash形式儲存,在控制層先進行校驗,不符合則丟棄,從而避免了對底層...