Chọn đúng kiểu dữ liệu trước hết: với object nhỏ, một Hash tiết kiệm hơn nhiều String key rời rạc, vì Redis tự dùng encoding listpack khi Hash có ít hơn hash-max-listpack-entries phần tử và mỗi value nhỏ hơn hash-max-listpack-value byte. Redis 7.0 đã đổi tên ziplist thành listpack, nên config hiện tại là hai key vừa nêu.
- Redis tự chọn encoding tối ưu theo kích thước (listpack, intset, skiplist) — xem bằng
OBJECT ENCODING key. - Rút gọn tên key:
usr:1001:prfthay vìuser:1001:profile, nhân với hàng triệu key là bớt được vài MB RAM. - Đặt TTL cho mọi cache key để không rò rỉ bộ nhớ.
- Nén value ở tầng ứng dụng (gzip JSON trước khi lưu) giảm được 70-80% với JSON lớn.
Công cụ đo: MEMORY USAGE key cho một key, MEMORY DOCTOR để chẩn đoán tổng thể.
Cần theo dõi: used_memory và mem_fragmentation_ratio — vượt 1.5 là đang phân mảnh, có thể bật activedefrag yes hoặc chạy MEMORY PURGE.