Wie berechnet man die Anzahl der möglichen Datensätze in Redis pro 32 GB Speicher?

3710
miduga

In meinem Unternehmen sprechen wir über die Möglichkeit, einen Teil unseres Backends in Redis anstelle von mongodb aufzubauen, aber wir möchten berechnen, wie viele Datensätze wir auf einem Server mit 32G speichern können. Auch wenn ich weiß, dass dies völlig von der Größe des Schlüssels und dem Wert abhängt, gibt es eine Möglichkeit zu berechnen, wie viele Elemente wir speichern können, wenn unsere Elemente alle diesem Element entsprechen:

key: Hexadecimal with 12 bytes. value: String with 20 bytes. 
2

1 Antwort auf die Frage

3
kobaltz

Angenommen, Sie haben 32 GB Speicher für Redis und anderen Speicher für Ihre Systemressourcen reserviert, können Sie die Anzahl der Einträge berechnen, die Sie speichern können. Beachten Sie jedoch, dass dies extrem verallgemeinert ist, da es immer eine Art Aufwand gibt. Wenn Sie die reine Anzahl von Einträgen aus mathematischer Sicht betrachten, könnten Sie ungefähr eine Milliarde Einträge mit 32 GB RAM speichern.

1 GB = 1024MB 1 MB = 1024KB 1 KB = 1024B  1GB = 1,073,741,824B 32GB = 34,359,738,368B  size = 12B + 20B = 32B  number_of_entries = (available_size / size_of_entry) = (34,359,738,368B / 32B) = 1,073,741,824 

Wie ich schon sagte, ist es sehr schlimm anzunehmen, dass es keinen Overhead gibt. Siehe Redis 'FAQ unten. Ohne weitere Details Ihrer Umgebung zu kennen, ist es unmöglich, genauere Zahlen anzugeben.

Was ist der Speicherfußabdruck von Redis?

Um einige Beispiele zu nennen (alle mit 64-Bit-Instanzen erhalten): Eine leere Instanz benötigt ~ 1 MB Speicher. 1 Million kleine Keys -> String Value-Paare benötigen ~ 100 MB Speicher. 1 Million Keys -> Hashwert, der ein Objekt mit 5 Feldern darstellt, benötigt ~ 200 MB Speicher. Um zu testen, ob Ihr Anwendungsfall trivial ist, verwenden Sie das Dienstprogramm redis-benchmark, um zufällige Datensätze zu generieren und mit dem INFO-Speicherbefehl den verwendeten Speicherplatz zu überprüfen. 64-Bit-Systeme benötigen erheblich mehr Speicher als 32-Bit-Systeme, um dieselben Schlüssel zu speichern, insbesondere wenn die Schlüssel und Werte klein sind. Dies liegt daran, dass Zeiger in 64-Bit-Systemen 8 Byte benötigen. Der Vorteil ist natürlich, dass Sie in 64-Bit-Systemen über viel Speicher verfügen können. Um große Redis-Server betreiben zu können, ist ein 64-Bit-System mehr oder weniger erforderlich. Die Alternative schert aus.

Toller Kommentar. Danke für Ihre Erklärung. :) Genau das wollte ich hören. miduga vor 8 Jahren 0
Ich habe eine Serie zu diesem Thema gestartet, von der ich hoffe, dass sie einen dieser Tage abschließen kann;) Hier ist der erste Teil, was es wert ist: https://redislabs.com/blog/redis-ram-ramifications-i Itamar Haber vor 8 Jahren 1