Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis - cách tốt nhất để lưu trữ một bản đồ lớn (từ điển)

Đú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:

  1. 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.
  2. Giữ kích thước HSET nhỏ hơn sau đó hash-max-zipmap-entrieshash-max-zipmap-value hợp lệ nếu bộ nhớ là mục tiêu chính. Đảm bảo hiểu hash-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.
  3. 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 đặt hash-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.
  4. Đọ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)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jedis - Khi nào sử dụng returnBrokenResource ()

  2. Nodejs, không đợi truy vấn Redis hoàn tất trước khi tiếp tục thực thi

  3. StackExchange.Redis.RedisTimeoutException:Hết thời gian chờ phản hồi

  4. Tôi có thể tuần tự hóa một đối tượng cá thể ruby ​​Digest ::SHA1 không?

  5. Lưu trữ thông tin người dùng bằng redis hoặc mongodb