In vielen Redis-Tutorials (wie diesem ) werden Daten in einem Satz gespeichert, wobei jedoch mehrere Werte in einer Zeichenfolge zusammengefasst sind (dh ein Benutzerkonto kann im Satz als zwei Einträge gespeichert werden: "Benutzer: 1000: Benutzername" und "Benutzer: 1000: Passwort").
Redis hat jedoch auch Hashes. Es scheint sinnvoller zu sein, einen Hash "user: 1000" zu haben, der einen Eintrag "Benutzername" und einen Eintrag "Passwort" enthält. Anstatt Zeichenfolgen zu verketten, um auf einen bestimmten Wert zuzugreifen, greifen Sie einfach direkt im Hash darauf zu.
Warum wird es nicht so oft verwendet? Sind das nur alte Tutorials? Oder haben Redis-Hashes Leistungsprobleme?
Antworten:
Redis-Hashes eignen sich gut zum Speichern komplexerer Daten, wie Sie in Ihrer Frage vorschlagen. Ich verwende sie genau dafür - um Objekte mit mehreren Attributen zu speichern, die zwischengespeichert werden müssen (insbesondere Inventardaten für ein bestimmtes Produkt auf einer E-Commerce-Website). Sicher, ich könnte eine verkettete Zeichenfolge verwenden - aber das erhöht die unnötige Komplexität meines Client-Codes, und ein Aktualisieren eines einzelnen Felds ist nicht möglich.
Sie haben vielleicht Recht - die Tutorials stammen möglicherweise einfach aus der Zeit vor der Einführung von Hashes. Sie wurden eindeutig zum Speichern von Objektdarstellungen entwickelt: http://oldblog.antirez.com/post/redis-weekly-update-1.html
Ich nehme an, ein Problem wäre die Anzahl der Befehle, die Redis ausführen muss, wenn ein neues Element eingefügt wird (n Anzahl der Befehle, wobei n die Anzahl der Felder im Hash ist), verglichen mit einem einfachen String SET-Befehl. Ich habe noch kein Problem bei einem Dienst festgestellt, der Redis ungefähr 1 Million Mal pro Tag trifft. Die Verwendung der richtigen Datenstruktur ist für mich wichtiger als eine vernachlässigbare Auswirkung auf die Leistung.
(Siehe auch meinen Kommentar zu Redis Sets vs. Redis Strings - Ich denke, Ihre Frage bezieht sich auf Strings, aber korrigieren Sie mich, wenn ich falsch liege!)
quelle
Hashes sind eine der effizientesten Methoden zum Speichern von Daten in Redis und empfehlen sie sogar, wann immer dies effektiv möglich ist.
http://redis.io/topics/memory-optimization
quelle
Anwendungsfallvergleich:
Sets bieten eine semantische Schnittstelle zum Speichern von Daten als Set auf dem Redis-Server. Die Anwendungsfälle für diese Art von Daten dienen eher Analysezwecken, z. B. wie viele Personen auf der Produktseite surfen und wie viele das Produkt am Ende kaufen.
Hashes bieten eine semantische Schnittstelle zum Speichern einfacher und komplexer Datenobjekte auf dem Redis-Server. Zum Beispiel Benutzerprofil, Produktkatalog usw.
Ref: Redis lernen
quelle