Đúng, như Itamar Haber nói, bạn nên xem hướng dẫn tối ưu hóa bộ nhớ redis này. Nhưng bạn cũng cần lưu ý một số điều nữa:
- Thích HSET hơn KEYS. Redis tiêu tốn rất nhiều bộ nhớ chỉ để quản lý không gian chính. Nói một cách đơn giản (và sơ sài), 1 HSET với 1.000.000 khóa tiêu thụ bộ nhớ ít hơn gấp 10 lần so với 1.000.000 khóa với một giá trị mỗi khóa.
- Giữ kích thước HSET nhỏ hơn sau đó
hash-max-zipmap-entries
vàhash-max-zipmap-value
hợp lệ nếu bộ nhớ là mục tiêu chính. Đảm bảo hiểuhash-max-zipmap-entries
là gì vàhash-max-zipmap-value
nghĩa là. Ngoài ra, hãy dành chút thời gian để đọc về ziplist. - Bạn thực sự không muốn xử lý
hash-max-zipmap-entries
với 10M + phím; thay vào đó, bạn nên chia một HSET thành nhiều khe. Ví dụ:bạn đặthash-max-zipmap-entries
là 10.000. Vì vậy, để lưu trữ hơn 10 triệu khóa, bạn cần hơn 1000 khóa HSET với 10.000 khóa mỗi khóa. Theo nguyên tắc chung:crc32 (key)% maxHsets. - Đọc về các chuỗi trong redis và sử dụng độ dài của tên KEY (theo HSET) dựa trên việc quản lý bộ nhớ thực cho cấu trúc này. Nói một cách dễ hiểu, giữ độ dài khóa dưới 7 byte, bạn sử dụng 16 byte cho mỗi khóa, nhưng khóa 8 byte dành 48 byte cho mỗi khóa. Tại sao? Đọc về các chuỗi động đơn giản.
Có thể hữu ích khi đọc về:
- Redis Tối ưu hóa bộ nhớ (từ sripathikrishnan)
- Nhận xét về cấu trúc danh sách zip nội bộ.
- Lưu trữ hàng trăm triệu cặp khóa-giá trị đơn giản trong Redis (Instagram)