效能優化 中階
常見快取策略有哪些?Cache-Aside、Write-Through 和 Write-Behind 的差異?
三種主要快取策略
1. Cache-Aside(旁路快取)
最常見的策略。應用程式自己負責管理快取。
讀取流程:
1. 先查 Cache(Redis)
2. Cache Hit → 直接回傳
3. Cache Miss → 查資料庫 → 寫入 Cache → 回傳
寫入流程:
1. 寫入資料庫
2. 刪除(或更新)Cache 中的對應 key
優點: 只快取真正被存取的資料,適合讀多寫少的場景 缺點: 首次存取一定 cache miss;需自行處理 TTL 與 cache 失效
2. Write-Through(穿透寫入)
寫入時同步更新 Cache 與資料庫。
寫入資料 → 同時更新 Cache 和 DB(同步)
優點: Cache 永遠與 DB 一致,不會有 stale data 缺點: 每次寫入都要更新快取,寫入延遲較高;可能快取許多不常讀取的資料
3. Write-Behind / Write-Back(回寫)
寫入只更新 Cache,非同步批次寫回資料庫。
寫入資料 → 只更新 Cache → 非同步批次寫回 DB
優點: 寫入延遲最低,適合高寫入場景(如計數器、熱門文章閱讀數) 缺點: 若 Cache 節點故障,未同步的資料可能遺失(資料一致性風險)
比較總結
| 策略 | 一致性 | 寫入效能 | 適用場景 |
|---|---|---|---|
| Cache-Aside | 最終一致 | 普通 | 讀多寫少(商品詳情、用戶資料) |
| Write-Through | 強一致 | 較慢 | 金融交易、訂單資料 |
| Write-Behind | 最終一致 | 最快 | 瀏覽數、按讚數等可容忍延遲的計數 |
面試加分點:提到 Cache Stampede(快取雪崩)問題與 Mutex Lock / Probabilistic Early Expiration 解法,以及 Redis 的 SETNX 實作分散式鎖。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
