Khi cache đầy bộ nhớ, cần bỏ bớt entry để nhận cái mới — chính sách eviction quyết định bỏ cái nào.
- LRU (Least Recently Used): bỏ entry lâu nhất chưa được truy cập. Giả định "vừa dùng gần đây thì còn dùng" (temporal locality). Mặc định phổ biến, hợp với đa số workload.
- LFU (Least Frequently Used): bỏ entry có tần suất truy cập thấp nhất. Giữ tốt các key "nóng dài hạn", nhưng key từng hot rồi nguội có thể ở lì → cần cơ chế aging.
- TTL (Time To Live): mỗi entry hết hạn sau một khoảng đặt trước, bất kể tần suất. Dùng khi dữ liệu tự nhiên cũ đi (giá, session, token) — ưu tiên độ tươi hơn hit rate.
Kết hợp: thực tế thường trộn — Redis cho đặt maxmemory-policy (allkeys-lru, allkeys-lfu, volatile-ttl...) song song với TTL từng key.
Đánh đổi: LRU rẻ, xấp xỉ đủ tốt; LFU cho hit rate cao hơn với phân bố lệch (Zipf) nhưng tốn bộ đếm; TTL tránh dữ liệu ôi nhưng có thể bỏ nhầm entry còn nóng. Chọn theo access pattern + yêu cầu độ tươi.