簡單講一講緩存穿透,緩存雪崩以及緩存擊穿

原文鏈接:https://zhuanlan.zhihu.com/p/81195864

緩存穿透:

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

緩存擊穿:

就是一個很熱門的數據,突然失效,大量請求到服務器數據庫中

緩存雪崩:

就是大量數據同一時間失效。

打個比方,你是個很有錢的人,開滿了百度雲,騰訊視頻各種雜七雜八的會員,但是你就是沒有netflix的會員,
然後你把這些賬號和密碼發佈到一個你自己做的網站上,

然後你有一個朋友每過十秒鐘就查詢你的網站,發現你的網站沒有Netflix的會員後打電話向你要。
你就相當於是個數據庫,網站就是Redis。這就是緩存穿透。

大家都喜歡看騰訊視頻上的《水果傳》,但是你的會員突然到期了,大家在你的網站上看不到騰訊視頻的賬號,紛紛打電話向你詢問,這就是緩存擊穿

你的各種會員突然同一時間都失效了,那這就是緩存雪崩了。

放心,肯定有辦法解決的。

緩存穿透:
1.接口層增加校驗,對傳參進行個校驗,比如說我們的id是從1開始的,那麼id<=0的直接攔截;
2.緩存中取不到的數據,在數據庫中也沒有取到,這時可以將key-value對寫爲key-null,這樣可以防止攻擊用戶反覆用同一個id暴力攻擊

緩存擊穿:
最好的辦法就是設置熱點數據永不過期,拿到剛纔的比方里,那就是你買騰訊一個永久會員

緩存雪崩:
1.緩存數據的過期時間設置隨機,防止同一時間大量數據過期現象發生。
2.如果緩存數據庫是分佈式部署,將熱點數據均勻分佈在不同搞得緩存數據庫中。

作者:草木青川
鏈接:https://zhuanlan.zhihu.com/p/81195864
來源:知乎

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