redis雪崩 擊穿 穿透

2021-10-10 02:42:46 字數 952 閱讀 7630

redis快取

快取流程:

①:使用者訪問前台

②:前台訪問redis,若redis有使用者要訪問的資料就直接返回

③:如果沒有就訪問資料庫,如果查到了就把資料同步到redis,並返回給使用者

快取雪崩

場景,雙十一的時候**將很多資料放到redis進行快取,並設定快取的失效時間為三小時,當快取時間到達的一瞬間,大量的請求直接打進資料庫,給資料庫幹崩了。

解決方案:

1.生成隨機失效的快取時間資料;

這樣的話快取不會一瞬間在同一時間失效。

2.讓快取節點分布在不同的物理節點上;

能夠保證快取層服務高可用性

3.生成不失效的快取資料;

4.定時任務更新快取資料;

穿透使用者請求資料,例如id為負數,不存在快取裡,也不存在資料庫裡,這樣的話這個請求會直接跳過redis不斷的打進資料庫,會造成快取穿透。

解決方案:

1.無意義資料放入快取,下一次相同請求就會命中快取;

2.ip過濾;

3.引數校驗;

4.布隆過濾器;

布隆過濾器就是把所有資料的乙個存在狀態以雜湊方法(多個雜湊方法)存進二進位制陣列裡,具體不談,但是請求打進來的時候經過這個過濾器可以篩選出存在的資料請求,不存在的直接return,可以有效的避免無效請求的打入。

擊穿由於快取熱點鍵到時失效導致使用者請求直接訪問資料庫,比如雙十一的一款手機賣的很火,**就把這個手機放到redis快取著,結果這個快取到期了,但是訪問這個資料的人很多,直接把redis幹穿了,全部打到了資料庫。

解決方案:

1.永久快取;

2.分布式鎖

當失效的時候只讓乙個執行緒進入資料庫進行查詢,並同時將此資料同步到redis,這樣別的請求就只會在redis裡查詢了。

redis 快取擊穿 穿透 雪崩

一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就去後端系統查詢 比如db 一些惡意的請求會故意查詢不存在的key,請求量很大,就會對後端系統造成很大的壓力。這就叫做快取穿透。如何避免?1 對查詢結果為空的情況也進行快取,這樣,再次訪問時,快取層會直接返回空值。快取時間設定短一...

Redis中擊穿 穿透 雪崩

擊穿 當在高併發下,部分key過期失效 lru,lfu 大量資料擊穿redis直接到達db 解決方法 使用redis分布式鎖,如果redis中沒有找到這個key,就使用分布式鎖控制 redis分布式鎖 setnx 如果不存在,則設定成功,獲取鎖.設定過期時間,防止死鎖 多執行緒監控,防止因為執行執行...

Redis快取雪崩 擊穿 穿透

目錄 三 快取擊穿 四 快取穿透 這三個問題一旦發生,就會導致大量請求進入後台的資料庫,如果有大量併發同時到達資料庫,有可能會導致資料庫宕機,影響業務,也有可能會導致一系列連鎖反映,很可能導致業務長時間無法恢復。接下來本文詳細介紹這三個問題的發生場景以及對應的解決方案。雪崩是指大量請求無法在redi...