緩存穿透,緩存擊穿,緩存雪崩解決方案分析

緩存穿透

介紹

緩存穿透是指查詢一個必定不存在的數據,因爲緩存是不命中時被動寫,而且處於容錯考慮,若是從存儲層查不到數據則不寫入緩存,這將致使這個不存在的數據每次請求都要到存儲層去查詢,失去了緩存的意義。後端

在流量大時,可能DB就掛掉了,要是有人利用不存在的key頻繁攻擊咱們的應用,這就是漏洞。緩存

解決方案

  • 經過布隆過濾器攔截。
  • 對空結果進行緩存,可是過時時間很短,不超過5分鐘。

緩存雪崩

介紹

緩存雪崩是指設置緩存採用了相同的過時時間,致使緩存在某一時刻同時失效,請求所有轉發到DB,DB瞬間壓力太重雪崩。併發

解決方案

  • 採用同步或者隊列的方式保證緩存的單線程寫,從而避免失效時大量的併發請求落到底層儲存系統上。
  • 在緩存的失效時間基礎上增長一個隨機值,好比1-5分鐘。

緩存擊穿

介紹

對於一些設置了過時時間的key,若是這些key可能在某些時間點被超高併發地訪問,是一種很是「熱點」的數據。高併發

緩存在某個點過時的時候,剛好在這個時間點對這個key有大量的併發請求過來,這些請求發現緩存過時通常都會從後端加載數據並回設到緩存,這個時候大併發的請求可能瞬間把後端DB壓垮。線程

解決方案

相關文章
相關標籤/搜索