Redis
 sql >> Database >  >> NoSQL >> Redis

Perché un file Redis dump.rdb da 500 MB richiede circa 5,0 GB di memoria?

Il rapporto tra la memoria e la dimensione del dump dipende dai tipi di dati utilizzati internamente da Redis.

Per piccoli oggetti (hash, liste e set ordinati), redis usa le ziplist per codificare i dati. Per piccoli insiemi composti da numeri interi, redis usa Intsets. ZipList e IntSet sono archiviati su disco nello stesso formato in cui sono archiviati in memoria . Quindi, ti aspetteresti un rapporto 1:1 se i tuoi dati utilizzano queste codifiche.

Per oggetti più grandi, la rappresentazione in memoria è completamente diversa dalla rappresentazione su disco. Il formato su disco è compresso, non ha puntatori, non ha a che fare con la frammentazione della memoria. Quindi, se i tuoi oggetti sono di grandi dimensioni, un rapporto memoria/disco di 10:1 è normale e previsto.

Se vuoi sapere quali oggetti consumano memoria, usa redis-rdb-tools per profilare i tuoi dati (disclaimer:sono l'autore di questo strumento). Da lì, segui le note sull'ottimizzazione della memoria su redis.io, così come la voce wiki sull'ottimizzazione della memoria su redis-rdb-tools.