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-entriesyhash-max-zipmap-valueválido si la memoria es el objetivo principal. Asegúrese de comprender quéhash-max-zipmap-entriesyhash-max-zipmap-valuesignificar. Además, tómate un tiempo para leer sobre ziplist. - En realidad, no desea manejar
hash-max-zipmap-entriescon 10M+ llaves; en su lugar, debe dividir un HSET en varias ranuras. Por ejemplo, establecehash-max-zipmap-entriescomo 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)