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

Redis – beste Möglichkeit, eine große Karte zu speichern (Wörterbuch)

Ja, wie Itamar Haber sagt, Sie sollten sich diesen Redis-Leitfaden zur Speicheroptimierung ansehen. Aber Sie sollten auch noch ein paar Dinge beachten:

  1. 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.
  2. Halten Sie die HSET-Größe kleiner als hash-max-zipmap-entries und gültiger hash-max-zipmap-value wenn das Gedächtnis das Hauptziel ist. Achten Sie darauf, welche hash-max-zipmap-entries zu verstehen und hash-max-zipmap-value gemein. Nehmen Sie sich auch etwas Zeit, um sich über Ziplist zu informieren.
  3. 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 beispielsweise hash-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.
  4. 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)