Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Warum benötigt eine 500-MB-Redis-dump.rdb-Datei etwa 5,0 GB Speicher?

Das Verhältnis von Arbeitsspeicher zu Dump-Größe hängt von den Datentypen ab, die Redis intern verwendet.

Für kleine Objekte (Hashes, Listen und Sortiermengen) verwendet Redis Ziplisten, um Daten zu codieren. Für kleine Mengen aus ganzen Zahlen verwendet redis Intsets. ZipLists und IntSets werden auf der Festplatte in demselben Format wie im Arbeitsspeicher gespeichert . Sie würden also ein Verhältnis von 1:1 erwarten, wenn Ihre Daten diese Codierungen verwenden.

Bei größeren Objekten unterscheidet sich die In-Memory-Darstellung vollständig von der On-Disk-Darstellung. Das On-Disk-Format ist komprimiert, hat keine Zeiger und muss sich nicht mit Speicherfragmentierung auseinandersetzen. Wenn Ihre Objekte also groß sind, ist ein Verhältnis von Speicher zu Festplatte von 10:1 normal und zu erwarten.

Wenn Sie wissen möchten, welche Objekte Speicherplatz verbrauchen, verwenden Sie redis-rdb-tools, um Ihre Daten zu profilieren (Haftungsausschluss:Ich bin der Autor dieses Tools). Folgen Sie von dort aus den Hinweisen zur Speicheroptimierung auf redis.io sowie dem Wiki-Eintrag zur Speicheroptimierung auf redis-rdb-tools.