一、快取穿透
1.產生原因:
查詢方式是先查詢快取、如果快取不存在則查詢資料庫、將查詢的結果回寫到快取、穿透的概念是快取不存在的情況下查詢資料庫、高併發應用下可能造成資料庫壓力過大
2.解決方案:
2.1:將對應的key為空的值也快取起來,減少資料庫的查詢
2.2:校驗key值的合法性、防止惡意攻擊
二、快取併發
1.產生原因:
高併發場景下同時大量查詢過期的key值、最後查詢資料庫將快取結果回寫到快取、造成資料庫壓力過大
2.解決方案:
2.1:採用分布式鎖-每次操作給當前操作上鎖、高併發壓力轉移到了分布式鎖
2.2:採用本地鎖-資料庫的查詢上鎖、但是多節點的情況下多資料庫查詢無效
2.3:軟過期-手動設定快取失效時間或者單獨開闢執行緒去更新快取資料
三、快取雪崩
1.產生原因:
伺服器重啟或者同一時間內快取失效、容易造成資料庫假死
2.解決方案:
2.1:手動設定redis過期策略、延長redis失效時長
Redis 快取穿透 快取併發 快取雪崩
快取穿透 快取併發 快取雪崩是常見的由於高併發而導致的快取問題。下面講解其產生原因和解決方案。快取穿透通常是由於惡意攻擊或無意造成的 快取併發是由於設計不足造成的 快取雪崩是由於大量快取同時失效造成的。三種問題都比較典型,是難以防範和解決的。下面講解其解決方案,以便在快取設計中進行參考。1 快取穿透...
Redis 十四 快取雪崩 快取穿透 快取併發
快取雪崩 資料未載入到快取中,或者快取同一時間大面積的失效,從而導致所有請求都去查資料庫,導致資料庫cpu和記憶體負載過高,甚至宕機。比如乙個雪崩的簡單過程 1 redis集群大面積故障 2 快取失效,但依然大量請求訪問快取服務redis 3 redis大量失效後,大量請求轉向到mysql資料庫 4...
redis的快取穿透 快取併發 快取失效
學習 截選乙個集體快取失效解決辦法 引起這個問題的主要原因還是高併發的時候,平時我們設定乙個快取的過期時間時,可能有一些會設定1分鐘啊,5分鐘這些,併發很高時可能會出在某乙個時間同時生成了很多的快取,並且過期時間都一樣,這個時候就可能引發一當過期時間到後,這些快取同時失效,請求全部 到db,db可能...