#cache

三種破口,長得不一樣 穿透 Penetration 查「不存在」的 key cache 沒有、DB 也沒有 → cache 永遠擋不住 每次都直達 DB 擊穿 Breakdown 單一熱 key ⏰ 剛過期 瞬間大量並行同時 miss → 全湧向 DB 重建 集中打一個點 雪崩 Avalanche 大量 key ⏰ 同時過期 (或 Redis 整個掛掉) → 大範圍 miss DB 崩 → 連鎖 共通:請求繞過 cache 打爆 DB;差別在破口—— 不存在的 key(穿透)· 一個熱點(擊穿)· 一大片(雪崩)

快取三大災難:穿透、擊穿、雪崩,與正確解法

· tech · 約 3 分鐘 · 📚 Redis 學習筆記 #6

把 Redis 當快取,最經典的模式是 cache-aside(旁路快取):讀取先查 cache,命中就回傳、沒命中(miss)才查資料庫,再把結果回填進 cache。平常運作得很好——直到某些情況下…

#redis#cache

過期 key 怎麼被清:惰性 + 定期,兩管齊下 TTL 到期的 key仍佔著記憶體(還沒被清) ① 惰性刪除(被動)有人來 GET 它 →發現過期 → 當場刪、回 nil ② 定期刪除(主動)背景每秒抽樣 ~10 次 →從有 TTL 的隨機抽一批刪 所以「過期」≠「立刻釋放」——沒人碰、也還沒被抽到,它就先躺著

Redis 的過期與淘汰:TTL、惰性刪除與 maxmemory 政策

· tech · 約 4 分鐘 · 📚 Redis 學習筆記 #5

把 Redis 當快取,遲早會碰到兩個問題:設了 TTL 的 key 到期後怎麼被清掉? 以及 記憶體滿了會怎樣? 這兩件事常被混為一談,其實是兩回事——前者是過期(expiration):「這個 k…

#redis#cache