Cache Problems

Cheat Sheet

Cache Problems

問題解決方案細節
緩存雪崩 (Avalanche)1. 緩存失效時間隨機化
2. 分布式限流
3. 緩存預熱
4. 降級策略
- 設置緩存過期時間隨機範圍,防止同時失效
- 使用 Nginx 或 API Gateway 設定限流,防止瞬間請求湧入
- 預先載入高頻數據,避免突發流量
- 當系統壓力過大時,提供部分數據或降級為靜態頁面
緩存穿透 (Penetration)1. 空結果緩存
2. 布隆過濾器
3. 參數校驗
- 將不存在的數據(空結果)也緩存,設置短期過期時間防止多次查詢
- 使用布隆過濾器過濾不存在的 key
- 對傳入參數進行校驗,避免無效請求打到後端
緩存擊穿 (Hotspot Invalid)1. 互斥鎖
2. 雙重緩存策略
- 使用分布式鎖,保證同一時間只有一個請求能查詢後端
- 設置主緩存和備份緩存,避免熱點數據失效後所有請求同時打後端
緩存汙染 (Pollution)1. 數據驗證
2. 簡單校驗
- 實施數據有效性驗證,確保寫入緩存前的數據是正確且有效的
- 對於高效或頻繁數據,考慮簡單校驗策略避免無效數據污染緩存
緩存一致性 (Consistency)1. 先刪後寫
2. 失敗重試機制
3. 消息隊列同步
- 當數據更新時,先刪除緩存,再更新數據庫,防止讀取過期緩存數據
- 若寫入失敗,設置重試機制或消息隊列來確保緩存和數據庫的一致性
緩存故障 (Breakdown)1. 降級機制
2. 多層緩存
3. 快速恢復機制
- 設置降級機制,當緩存故障時,部分非關鍵數據可不查詢數據庫
- 使用多層次緩存(如本地緩存 + Redis),減少單點故障影響
- 提升 Redis 的監控和自動恢復機制,減少緩存宕機時間

相關主題