redis 快取雪崩 穿透 擊穿

2021-10-09 08:47:41 字數 841 閱讀 4115

開源的、高效能的非關係型資料庫。

大量的redis快取key同一時間失效,導致大量訪問請求直接打到資料庫,造成資料庫掛掉。

解決方案:

1.隨機初始化快取失效時間,不要讓大量快取在同一時間失效。

2.將熱點key分配到不同的redis節點上。

3.設定定時任務,在快取失效時將資料重新刷進去。

一般是指redis和資料中都沒有這樣的資料,大量請求穿透redis直接懟到資料庫,導致資料庫掛掉。一般是黑客惡意攻擊

解決方案:

1、使用布隆過濾器,這個是比較好的方法。布隆過濾器的特點:它告訴你存在的不一定存在。但是它說不存在的一定就不存在。所以能夠將不存在的請求key直接return掉。

2、將第一次請求資料庫查詢結果寫入redis,這樣能避免同乙個key反覆呼叫,但不能避免不同的非法key呼叫。

訪問某個熱點資料時,資料放進快取,正常情況下,由redis返回結果。但當key突然失效時,大量的訪問請求擊穿redis,直接懟到資料庫。

解決方案:使用分布式鎖。 在請求資料庫時上鎖,只有乙個執行緒能搶到這個鎖,也就是說只有乙個執行緒能訪問資料庫,其它沒有搶到鎖的執行緒先睡幾秒。當那個搶到鎖的執行緒拿到資料後,將資料寫到redis裡面。其餘執行緒睡醒了,再去訪問redis,裡面就有資料了。

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

乙個一定不存在快取及查詢不到的資料,由於快取是不命中時被動寫的,並且出於容錯考慮,如果從儲存層查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到儲存層去查詢,失去了快取的意義。有很多種方法可以有效地解決快取穿透問題,最常見的則是採用布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bit...

redis 快取穿透 擊穿 雪崩

介面層增加校驗,如使用者鑑權校驗,id做基礎校驗,id 0的直接攔截 從快取取不到的資料,在資料庫中也沒有取到,這時也可以將key value對寫為key null,快取有效時間可以設定短點,如30秒 設定太長會導致正常情況也沒法使用 這樣可以防止攻擊使用者反覆用同乙個id暴力攻擊 public o...

redis快取穿透,擊穿,雪崩

快取穿透 描述 快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,多來自於黑客攻擊。由於快取是不命中時被動寫的,並且出於容錯考慮,如果從儲存層查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到儲存層去查詢,失去了快取的意義。在流量大時,可能db就掛掉了,要是有人利用不存在的k...