Redis 快取穿透 快取雪崩和快取擊穿是什麼?

2021-10-25 10:07:08 字數 1285 閱讀 4229

對於快取穿透、快取雪崩和快取擊穿常常出現在面試中,今天來看看它到底是啥吧?

理解

重在穿透吧,也就是訪問透過redis直接經過mysql,通常是乙個不存在的key,在資料庫查詢為null。每次請求落在資料庫、並且高併發。資料庫扛不住會掛掉。

解決方案

理解

雪崩,就是某東西蜂擁而至的意思,像雪崩一樣。在這裡,就是redis快取集體大規模集體失效,在高併發情況下突然使得key大規模訪問mysql,使得資料庫崩掉。可以想象下國家人口老年化。以後那天人集中在70-80歲,就沒人幹活了。國家勞動力就造成壓力。

解決方案

理解

快取擊穿,是指乙個key非常熱點,在不停的扛著大併發,大併發集中對這乙個點進行訪問,當這個key在失效的瞬間,持續的大併發就穿破快取,直接請求資料庫,好像蠻力擊穿一樣。

擊穿和穿透不同,穿透的意思是想法繞過redis去使得資料庫崩掉。而擊穿你可以理解為正面剛擊穿,這種通常為大量併發對乙個key進行大規模的讀寫操作。這個key在快取失效期間大量請求資料庫,對資料庫造成太大壓力使得資料庫崩掉。就比如在秒殺場景下10000塊錢的mac和100塊的mac這個100塊的那個訂單肯定會被搶到爆,不斷的請求(當然具體秒殺有自己處理方式這裡只是舉個例子)。所以快取擊穿就是針對某個常用key大量請求導致資料庫崩潰。

解決方案

希望本文對你有所幫助~~如果對軟體測試、介面測試、自動化測試、面試經驗交流感興趣可以加入我們。642830685,免費領取最新軟體測試大廠面試資料和python自動化、介面、框架搭建學習資料!技術大牛解惑答疑,同行一起交流。

Redis快取穿透和快取雪崩

了解過redis的人都知道,在執行讀操作 查詢等 的時候會先從快取中讀取,快取中沒有的話再去資料庫中查詢。如下圖 概念 使用者想要查詢乙個資料,發現redis快取中沒有,也就是快取沒有命中,於是向持久層資料庫查詢。發現也沒有,於是本次查詢失敗。當使用者很多的時候,快取都沒有命中 如秒殺 於是都去請求...

redis快取雪崩和快取穿透

快取雪崩 由於原有的快取過期失效,新的快取還沒有快取進來,有乙隻請求快取請求不到,導致所有請求都跑去了資料庫,導致資料庫io 記憶體和cpu眼裡過大,甚至導致宕機,使得整個系統崩潰。解決思路 1,採用加鎖計數,或者使用合理的佇列數量來避免快取失效時對資料庫造成太大的壓力。這種辦法雖然能緩解資料庫的壓...

Redis 快取穿透 快取雪崩和快取擊穿

快取穿透,是指查詢乙個資料庫一定不存在的資料。正常的使用快取流程大致是,資料查詢先進行快取查詢,如果key不存在或者key已經過期,再對資料庫進行查詢,並把查詢到的物件,放進快取。如果資料庫查詢物件為空,則不放進快取。流程 引數傳入物件主鍵id 根據key從快取中獲取物件 如果物件不為空,直接返回 ...