Redis擊穿、穿透、雪崩

1、擊穿是指一個key在不停的大併發下集中對這一個點進行訪問,當這個key在失效的瞬間,持續的大併發就穿破緩存,直接請求數據庫,就像在一個屏障上鑿開了一個洞。
解決方案:比如在做電商項目的時候,這貨成爲“爆款”。大多數情況下這種爆款很難對數據庫服務器造成壓垮性的壓力,達到這個級別的公司沒有幾家的。讓緩存永不過期,即便某些商品自己發酵成了爆款,緩存取的值都不會爲空,如果緩存數據後臺有更改,更改時重置緩存。
2、穿透是指查詢一個數據庫一定不存在的數據。數據查詢先進行緩存查詢,如果key不存在或者key已經過期,再對數據庫進行查詢,並把查詢到的對象,放進緩存。如果數據庫查詢對象爲空,則不放進緩存。這樣會每次都去查數據庫。
解決方案:採用緩存空值的方式,如果從數據庫查詢的對象爲空,也放入緩存,只是設定的緩存過期時間較短,比如設置爲60秒。
3、雪崩是指在某一個時間段,緩存集中過期失效。大量緩存集體過期,對於數據庫就會產生週期性的壓力波峯。
解決方案:儘可能分散緩存過期時間

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