請求cache拿不到資料,就會去儲存層拿,會一直請求資料。導致後端打崩。
1.快取層快取空值,增加過期時間
2.布隆過濾器
快取雪崩就是指快取由於某些原因,整體crash掉了,導致大量請求到達後端資料庫,從而導致資料庫崩潰。
如:1.某個時間點內,系統預載入的快取週期性集中失效了
設定快取n+隨機數過期時間
2.redis掛了,客戶端直接請求到資料庫裡面
解決方法:1、保持快取層伺服器的高可用(監控、集群、哨兵。)。
3.也包含"快取穿透",請求併發過高等
限流降級等
a、b、c、d同時請求乙個資源,不存在時都要去請求儲存層
優化方法:
1、互斥鎖:
redis快取穿透 快取雪崩和熱點key
快取穿透 穿過快取,直接訪問資料庫。解決方案 對查詢不存在的儲存到快取中value設定為null.採用布隆過濾器.如果key有規則,那麼就可以直接過濾掉無規則的key 偽 if jedis查詢快取不存在 else 返回結果 else快取雪崩 某一時刻大量的key過期,使用者又大量的查詢這些key。造...
快取穿透,快取雪崩,熱點key及解決辦法
1 穿透 穿透 頻繁查詢乙個不存在的資料,由於快取不命中,每次都要查詢持久層。從而失去快取的意義。解決辦法 持久層查詢不到就快取空結果,查詢時先判斷快取中是否exists key 如果有直接返回空,沒有則查詢後返回,注意insert時需清除查詢的key,否則即便db中有值也查詢不到 當然也可以設定空...
Redis雪崩和Redis穿透
redis雪崩 查詢時redis沒有資料本來先從redis裡面查某個資料 但是redis中這個資料剛好被刪除了,還沒來得及更新 一瞬間很多請求直接進入了mysql進行查詢 而mysql承受不了太大壓力,就會出現雪崩redis穿透 跳過我們預想的資料本來先從redis裡面查某個資料 但是redis中沒...