Ja, wie Itamar Haber sagt, Sie sollten sich diesen Redis-Leitfaden zur Speicheroptimierung ansehen. Aber Sie sollten auch noch ein paar Dinge beachten:
- Bevorzugen Sie HSET gegenüber KEYS. Redis verbraucht viel Speicher nur für die Schlüsselspeicherverwaltung. Einfach (und grob) ausgedrückt verbraucht 1 HSET mit 1.000.000 Schlüsseln bis zu 10x weniger Speicherplatz als 1.000.000 Schlüssel mit jeweils einem Wert.
- Halten Sie die HSET-Größe kleiner als
hash-max-zipmap-entries
und gültigerhash-max-zipmap-value
wenn das Gedächtnis das Hauptziel ist. Achten Sie darauf, welchehash-max-zipmap-entries
zu verstehen undhash-max-zipmap-value
gemein. Nehmen Sie sich auch etwas Zeit, um sich über Ziplist zu informieren. - Eigentlich wollen Sie nicht mit
hash-max-zipmap-entries
umgehen mit 10M+ Schlüsseln; Stattdessen sollten Sie ein HSET in mehrere Slots aufteilen. Sie legen beispielsweisehash-max-zipmap-entries
fest als 10.000. Um also mehr als 10 Millionen Schlüssel zu speichern, benötigen Sie mehr als 1000 HSET-Schlüssel mit jeweils 10.000. Als grobe Faustregel gilt:crc32(key) % maxHsets. - Lesen Sie mehr über Strings in Redis und verwenden Sie eine KEY-Namenslänge (in HSET), die auf der realen Speicherverwaltung für diese Struktur basiert. Einfach ausgedrückt, wenn Sie die Schlüssellänge unter 7 Byte halten, verbringen Sie 16 Byte pro Schlüssel, aber ein 8-Byte-Schlüssel verbraucht jeweils 48 Byte. Wieso den? Lesen Sie mehr über einfache dynamische Zeichenfolgen.
Es kann hilfreich sein, Folgendes zu lesen:
- Redis-Speicheroptimierung (von sripathikrishnan)
- Kommentare zur internen Ziplist-Struktur.
- Speichern von Hunderten Millionen einfacher Schlüssel-Wert-Paare in Redis (Instagram)