背景問題:Cache Stampede(快取雪崩)
在高並發環境下,當某個 Redis cache key 同時過期,大量請求會同時發現 cache miss 並全部打向後端 DB / Provider,這就是 Cache Stampede。
flowchart TD
E[Cache Key 過期] --> A[Request A Cache Miss]
E --> B[Request B Cache Miss]
E --> C[Request C Cache Miss]
E --> D[Request D Cache Miss]
A --> P[Call Provider]
B --> P
C --> P
D --> P
P --> DB[DB 或 Provider 被打爆]
解決方案: 在更新 Cache 時加 分散式鎖(RedLock),確保同一時間只有一個 instance 去 Provider 取資料並回填 Cache。