Vậy với 200GB dữ liệu thì hướng nào hợp lý hơn?
- Cache một phần (partial cache)
- Chỉ cache những dữ liệu thường xuyên truy cập (hot data) — chứ không cache toàn bộ.
- Redis có cơ chế eviction policy (
volatile-lru
, allkeys-lru
,...) để tự động xóa bớt những key ít dùng nhất.
- Ví dụ: Cache khoảng 10GB dữ liệu hot thôi, còn lại đọc từ database.
- Dùng hệ thống cache disk-based
- Thay vì RAM-only như Redis, có thể dùng cache lưu trên SSD/HDD.
- Ví dụ:
- PHPFastCache với driver
Files
(cache ra file).
- KeyDB: Redis-compatible, hỗ trợ lưu disk snapshot tốt hơn.
- RocksDB: database NoSQL cực nhanh, tối ưu đọc/ghi từ SSD.
- Varnish Cache: nếu là cache HTTP responses (không phải cache database).
- Chia cache theo tầng (multi-layer caching)
- RAM (Redis) -> cache các request siêu hot (ví dụ 1% dữ liệu).
- SSD cache -> cache các request phổ biến khác.
- DB -> fallback cuối cùng.
Nếu bạn vẫn muốn Redis nhưng cho khối lượng lớn thì sao?
Có vài giải pháp, nhưng sẽ khá nặng:
- Sharding Redis (chia nhiều Redis server).
- Redis on Flash (công nghệ Redis Enterprise): cho phép lưu cache chủ yếu trên SSD, chỉ hot data trên RAM. Nhưng giải pháp này là thương mại (trả phí nặng).