一般正常的快取流程圖: 
1.快取雪崩
原因:大量的快取同一時間失效,導致大量的請求都直接請求資料庫,從而造成資料庫掛掉,進而影響頁面無法正常作業了
解決方案:
1-設定快取失效時間,使其不在同一時間失效,隨機初始化失效時間,這樣就不會同時失效
2-將熱點key放到集群中的不同節點上
3-最暴力的方式就是不設定失效時間(一般不采取)
4-設定定時任務,使其不定時重繪快取失效時間
2.快取穿透
原因:非法用戶在請求中傳入非法資料到請求,在redis中查找不到就會去資料庫查,從而導致資料庫掛掉,一般都是惡意用戶
解決方案:
1-不管查詢資料庫得到什么結果,即使是null,也快取到redis中,下次再有這樣的請求也可以直接回傳,當然也會換不同的請求
2-直接拉黑這個IP,當然也有可能換不同的IP
3-對引數的合法性進行校驗,引數不合法直接回傳
4-使用布隆過濾器,這就是個新技術了
3.快取擊穿
原因:大量的請求去訪問某個key,但突然間這個key失效了,從而直接訪問資料庫,導致資料庫掛掉了
解決方案: 1-最暴力解決就是永不失效這個可以,當然一般采取這樣的方式
2-分布式應用就可以使用分布式鎖,單體應用就可以用互斥鎖,就是只有一個執行緒能獲取該鎖進行訪問資料庫,查詢到后快取到redis,后面的請求就直接訪問redis,從而防止擊穿
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/172021.html
標籤:其他
