Redis
 sql >> Base de données >  >> NoSQL >> Redis

Pourquoi un fichier redis dump.rdb de 500 Mo nécessite environ 5,0 Go de mémoire ?

Le rapport entre la mémoire et la taille de vidage dépend des types de données que Redis utilise en interne.

Pour les petits objets (hachages, listes et ensembles triés), redis utilise des ziplists pour encoder les données. Pour les petits ensembles constitués d'entiers, redis utilise Intsets. Les ZipLists et les IntSets sont stockés sur le disque dans le même format qu'ils sont stockés en mémoire . Donc, vous vous attendez à un ratio de 1:1 si vos données utilisent ces encodages.

Pour les objets plus grands, la représentation en mémoire est complètement différente de la représentation sur disque. Le format sur disque est compressé, n'a pas de pointeurs, n'a pas à gérer la fragmentation de la mémoire. Ainsi, si vos objets sont volumineux, un rapport mémoire/disque de 10:1 est normal et attendu.

Si vous voulez savoir quels objets consomment de la mémoire, utilisez redis-rdb-tools pour profiler vos données (avertissement :je suis l'auteur de cet outil). À partir de là, suivez les notes d'optimisation de la mémoire sur redis.io, ainsi que l'entrée du wiki d'optimisation de la mémoire sur redis-rdb-tools.