sql >> Base de Datos >  >> NoSQL >> Redis

Redis:la mejor manera de almacenar un mapa grande (diccionario)

Sí, como dice Itamar Haber, deberías mirar esta guía de optimización de memoria redis. Pero también debes tener en cuenta algunas cosas más:

  1. Prefiere HSET a KEYS. Redis consume mucha memoria solo en la gestión del espacio clave. En términos simples (y aproximados), 1 HSET con 1 000 000 de claves consume hasta 10 veces menos memoria que 1 000 000 de claves con un valor cada una.
  2. Mantener el tamaño de HSET menor que hash-max-zipmap-entries y hash-max-zipmap-value válido si la memoria es el objetivo principal. Asegúrese de comprender qué hash-max-zipmap-entries y hash-max-zipmap-value significar. Además, tómate un tiempo para leer sobre ziplist.
  3. En realidad, no desea manejar hash-max-zipmap-entries con 10M+ llaves; en su lugar, debe dividir un HSET en varias ranuras. Por ejemplo, establece hash-max-zipmap-entries como 10.000. Entonces, para almacenar más de 10 millones de claves, necesita más de 1000 claves HSET con 10,000 cada una. Como regla general aproximada:crc32(key) % maxHsets.
  4. Lea sobre cadenas en redis y use una longitud de nombre CLAVE (en HSET) basada en la administración de memoria real para esta estructura. En términos simples, manteniendo la longitud de la clave por debajo de los 7 bytes, gasta 16 bytes por clave, pero una clave de 8 bytes gasta 48 bytes cada una. ¿Por qué? Lea sobre cadenas dinámicas simples.

Puede ser útil leer sobre:

  • Optimización de memoria de Redis (de sripathikrishnan)
  • Comentarios sobre la estructura interna de ziplist.
  • Almacenamiento de cientos de millones de pares clave-valor simples en Redis (Instagram)