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:
- 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.
- Mantener el tamaño de HSET menor que
hash-max-zipmap-entries
yhash-max-zipmap-value
válido si la memoria es el objetivo principal. Asegúrese de comprender quéhash-max-zipmap-entries
yhash-max-zipmap-value
significar. Además, tómate un tiempo para leer sobre ziplist. - En realidad, no desea manejar
hash-max-zipmap-entries
con 10M+ llaves; en su lugar, debe dividir un HSET en varias ranuras. Por ejemplo, establecehash-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. - 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)