Redis穿透,雪崩的解決辦法

2021-09-11 21:32:23 字數 476 閱讀 2845

redis是開發過程中經常使用到的工具,這裡簡單說一下如何解決穿透,雪崩的問題。

穿透:

1、利用互斥鎖。快取失效的時候,得到了鎖,再請求資料庫。沒得到鎖,休眠一段時間重試。

2、採用非同步更新策略。無論key是否取到值,都直接返回。value值中維護乙個快取失效時間,快取如果過期,非同步乙個執行緒去讀資料庫,跟新快取。需要快取預熱(專案啟動前,先載入快取)。

3、提供乙個能迅速判斷請求是否有效攔截機制。如布隆過濾器,內部維護一系列合法有效的key,迅速判斷出請求的key合不合法。

雪崩:

1、給快取的失效時間加上隨機值,避免集體失效。

2、利用互斥鎖。但會導致吞吐量下降。

3、使用雙快取。乙個設失效時間(a),乙個不失效(b),做快取預熱。從a讀資料庫,有則直接返回;無就從b讀,且非同步啟動乙個更新執行緒,同時更新a,b。

redis快取穿透 雪崩 擊穿,以及解決辦法

redis快取穿透 雪崩 擊穿,以及解決辦法 我們先來討論乙個redis的使用場景 使用redis作為快取的時候,大部分做法是 先在redis裡查詢是否有該key,比如查詢使用者資訊時,先在redis裡根據使用者id查詢,如果沒有則到資料庫裡查詢,如果在資料庫裡查詢到了再放入redis,並設定過期時...

redis快取穿透和快取雪崩以及解決辦法

快取穿透是指查詢乙個一定不存在的資料,由於快取是不命中時需要從資料庫查詢,查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到資料庫去查詢,造成快取穿透。1.對所有可能查詢的引數以hash形式儲存,在控制層先進行校驗,不符合則丟棄。還有最常見的則是採用布隆過濾器,將所有可能存在的資料雜湊到...

Redis快取雪崩 穿透 擊穿概念及解決辦法

訪問乙個不存在的key,快取不起作用,請求會穿透到db,流量大時db會掛掉。大量的key設定了相同的過期時間,導致在快取在同一時刻全部失效,造成瞬時db請求量大 壓力驟增,引起雪崩。可以給快取設定過期時間時加上乙個隨機值時間,使得每個key的過期時間分布開來,不會集中在同一時刻失效。乙個存在的key...