Nâng CaoRedis iconRedis

Cache stampede (thundering herd) là gì? Các cách phòng tránh trong Redis?

Cache stampede xảy ra khi một hot cache key expire, hàng trăm/nghìn request đồng thời không thấy key trong cache, tất cả cùng query database, gây overload.

  • Cách phòng tránh: Probabilistic Early Expiration — thay vì expire chính xác, tính toán xác suất recompute tăng dần khi gần expire, một request 'may mắn' sẽ recompute trước khi thực sự expire (không cần lock).
  • Mutex/Distributed lock — request đầu tiên acquire lock và load data, các request khác đợi hoặc trả về stale data.
  • Stale-while-revalidate — trả về data cũ ngay lập tức trong khi background job refresh cache (không có downtime nhưng data có thể stale ngắn).
  • Cache warming — preload cache trước khi deploy hoặc khi key sắp expire.
  • Dùng TTL jitter (thêm random ±10-20% vào TTL) để tránh nhiều key expire cùng lúc (tránh stampede hàng loạt).
  • Trong practice, kết hợp mutex lock + stale cache fallback là pattern phổ biến nhất.

Xem toàn bộ Redis cùng filter theo level & chủ đề con.

Mở danh sách Redis