Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Por que um arquivo dump.rdb Redis de 500 MB ocupa cerca de 5,0 GB de memória?


A proporção da memória para o tamanho do dump depende dos tipos de dados que o Redis usa internamente.

Para objetos pequenos (hashes, listas e conjuntos ordenados), o redis usa listas zip para codificar dados. Para pequenos conjuntos feitos de inteiros, redis usa Intsets. ZipLists e IntSets são armazenados no disco no mesmo formato em que são armazenados na memória . Portanto, você esperaria uma proporção de 1:1 se seus dados usarem essas codificações.

Para objetos maiores, a representação na memória é completamente diferente da representação em disco. O formato em disco é compactado, não possui ponteiros, não precisa lidar com a fragmentação da memória. Portanto, se seus objetos forem grandes, uma proporção de memória para disco de 10:1 é normal e esperada.

Se você quiser saber quais objetos consomem memória, use redis-rdb-tools para criar o perfil de seus dados (disclaimer:eu sou o autor desta ferramenta). A partir daí, siga as notas de otimização de memória em redis.io, bem como a entrada wiki de otimização de memória em redis-rdb-tools.