Cache stampede xảy ra khi một key nóng hết hạn cùng lúc: hàng loạt request đồng thời miss và đồng loạt truy vấn DB để tính lại → DB quá tải đột ngột.
Cách giảm:
- Locking / single-flight: chỉ cho một request tính lại, số còn lại chờ kết quả (hoặc dùng giá trị cũ tạm).
- Early / probabilistic expiration: làm mới key sớm một cách ngẫu nhiên trước khi hết hạn, để không phải mọi request cùng rơi vào lúc hết hạn.
- Jitter TTL: cộng thời gian ngẫu nhiên vào TTL → phân tán thời điểm hết hạn.
- Stale-while-revalidate: trả bản cũ ngay, làm mới ở nền.
Hai vấn đề liên quan: cache penetration (query key không tồn tại liên tục → cache cả giá trị rỗng), và cache avalanche (rất nhiều key hết hạn cùng thời điểm → dùng jitter TTL).