快取穿透、快取雪崩、快取擊穿

MaChao發表於2020-10-28

快取穿透

就是客戶持續向伺服器發起對不存在伺服器中資料的請求。客戶先在Redis中查詢,查詢不到後去資料庫中查詢。

快取擊穿

就是一個很熱門的資料,突然失效,大量請求到伺服器資料庫中。

快取雪崩

  • 就是大量資料同一時間失效。
  • 打個比方,你是個很有錢的人,開滿了百度雲,騰訊視訊各種雜七雜八的會員,但是你就是沒有netflix的會員,然後你把這些賬號和密碼釋出到一個你自己做的網站上,然後你有一個朋友每過十秒鐘就查詢你的網站,發現你的網站沒有Netflix的會員後打電話向你要。你就相當於是個資料庫,網站就是Redis。這就是快取穿透。
  • 大家都喜歡看騰訊視訊上的《水果傳》,但是你的會員突然到期了,大家在你的網站上看不到騰訊視訊的賬號,紛紛打電話向你詢問,這就是快取擊穿。
  • 你的各種會員突然同一時間都失效了,那這就是快取雪崩了。

快取穿透

  • 介面層增加校驗,對傳參進行個校驗,比如說我們的id是從1開始的,那麼id<=0的直接攔截;
  • 快取中取不到的資料,在資料庫中也沒有取到,這時可以將key-value對寫為key-null,這樣可以防止攻擊使用者反覆用同一個id暴力攻擊;

快取擊穿

  • 最好的辦法就是設定熱點資料永不過期,拿到剛才的比方里,那就是你買騰訊一個永久會員

快取雪崩

  • 快取資料的過期時間設定隨機,防止同一時間大量資料過期現象發生。
  • 如果快取資料庫是分散式部署,將熱點資料均勻分佈在不同搞得快取資料庫中。
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章