Frage

Ich habe mit Redis experimentiert, und ich mag die Skalierbarkeit, dass es auf den Tisch bringt. Aber ich frage mich, wie für ein System, Änderungen an Datenstrukturen zu handhaben, das sich bereits in der Produktion.

Zum Beispiel, lassen Sie mich sagen, dass ich Informationen über einen Benutzer sammle, und ich verwende die user_id als Schlüssel, und Dumping die anderen Daten über den Benutzer als comma separated values.

user_id: name, email, etc.

Nun, sagt nach etwa 100.000 Datensätze, merke ich, dass ich zu Abfrage von email benötigt - wie würde ich jetzt eine Momentaufnahme der vorhandenen Daten übernehmen und einen neuen Index für sie erstellen

?
War es hilfreich?

Lösung

Von meinem Verständnis von Redis, wäre dies etwas verlangen, die Redis ist nicht zu tun konzipiert. Sie würden in einer Schleife haben, obwohl alle Ihre Unterlagen (Tasten * verwenden) und dann die Reihenfolge der Daten ändern und einen neuen Schlüssel machen. Ich persönlich würde empfehlen, eine Liste anstelle von Komma getrennte Zeichenfolge. In einer Liste können Sie es von innen redis neu anordnen. Eine Redis Liste sieht wie folgt aus:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something

Ich baue eine app, in dem ich das gleiche Problem aufgetreten. Ich löste es durch eine Liste mit für alle die Benutzer-Info, und habe dann einen Schlüssel mit dem E-Mail-Benutzer mit einem Wert der ID des Benutzers. Also meine Datenbank würde so etwas wie folgt aus:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something
"c.mcgaley@gmail.com" => "Colum"

Also habe ich die ID oder die E-Mail nicht abfragen und immer noch die Informationen, die ich brauchte.

Es tut uns Leid, dass ich nicht in der Lage war direkt Ihre Frage zu beantworten. Hoffe nur, dass dies dazu beigetragen.

Andere Tipps

csv Verwendung ist keine gute Idee, wenn Sie Änderungen unterstützen wollen. Sie benötigen einen Serializer zu verwenden, die Griffe fehlen / neue Werte, wenn alles in einem Schlüssel ist, oder Sie können einen redis Hash verwenden, die Sie genannt Subkeys gibt. In beiden Fällen können Sie hinzufügen / entfernen Felder mit dem einzige Voraussetzung ist, dass Ihr Code weiß, was zu tun ist, wenn es einen Datensatz ohne den neuen Wert liest.

Damit Lookup per E-Mail benötigen Sie einen Index hinzufügen - grundsätzlich einen Schlüssel (oder Liste) für jede E-Mail mit dem Benutzer-ID als Wert. Sie müssen diesen Index füllen, indem Sie alle Tasten einmal bekommen, dann dafür, dass Sie es aktualisieren, wenn E-Mails ändern.

Sie können alle Tasten durchlaufen und speichern sie mit einer anderen ID, aber das ist wahrscheinlich mehr Mühe, als es wert ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top