redis緩存擊穿、緩存穿透和緩存雪崩的理解和解決方案

redis緩存穿透、擊穿、雪崩
1.穿透的意思是用戶多次查詢數據沒有在redis緩存中查到數據,轉而向持久層數據庫查詢導致數據庫壓力太大就叫緩存穿透
1.1.穿透可以通過布隆過濾器和存儲空值兩種方式解決
1.1.1布隆過濾器是一種數據結構 通過hansh值計算得到去對比對應的下標 如果都爲1說明這個值有可能存在 有一個爲0說明這個值一定不存在
2.擊穿的意思是一個key熱點承受着很大的併發,當這個key失效的瞬間,訪問到持久層數據庫,導致數據庫壓力太大稱爲緩存擊穿
2.1 擊穿可以使用互斥鎖的方式解決 如果緩存不存在通過redis的SETNX鎖定併到持久層數據庫查詢再添加到緩存然後解鎖 這個過程中如果其他線程訪問則讓他們睡眠50毫秒後重試
3.當緩存層出現錯誤或重啓,所有請求都法向持久層數據庫 導致數據庫壓力太大 稱爲雪崩
3.1 可以通過上鎖、使用中間件、做二級緩存、給不同的key設置不同的過期時間來解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章