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

¿Por qué un archivo dump.rdb de Redis de 500 MB ocupa aproximadamente 5,0 GB de memoria?

La relación entre la memoria y el tamaño del volcado depende de los tipos de datos que Redis usa internamente.

Para objetos pequeños (hashes, listas y conjuntos ordenados), redis usa ziplists para codificar datos. Para conjuntos pequeños hechos de números enteros, redis usa Intsets. ZipLists e IntSets se almacenan en el disco en el mismo formato que se almacenan en la memoria . Por lo tanto, esperaría una proporción de 1:1 si sus datos usan estas codificaciones.

Para objetos más grandes, la representación en memoria es completamente diferente de la representación en disco. El formato en disco está comprimido, no tiene punteros, no tiene que lidiar con la fragmentación de la memoria. Por lo tanto, si sus objetos son grandes, una proporción de memoria a disco de 10:1 es normal y esperada.

Si desea saber qué objetos consumen memoria, use redis-rdb-tools para perfilar sus datos (descargo de responsabilidad:soy el autor de esta herramienta). A partir de ahí, siga las notas de optimización de memoria en redis.io, así como la entrada wiki de optimización de memoria en redis-rdb-tools.