2010-08-24 6 views
55

Ich lerne Redis für ein Projekt von mir zu verwenden. Eine Sache, die ich nicht verstanden habe, ist, wofür genau die Doppelpunkte in den Namen der Schlüssel verwendet werden.Was ist der Zweck von Doppelpunkten in Redis Schlüssel

Ich habe den Namen des Haupt wie diese gesehen:

users:bob 
color:blue 
item:bag 

Ist der Darm in Kategorien separate Tasten und schneller den Schlüssels Suche? Wenn ja, können Sie bei der Benennung von Schlüsseln mehrere Doppelpunkte verwenden, um sie in Unterkategorien aufzuteilen? Zuletzt haben sie etwas mit der Definition verschiedener Datenbanken innerhalb des Redis-Servers zu tun?

Ich habe durch die Dokumentation gelesen und zahlreiche Google-Recherchen in der Sache gemacht, aber merkwürdigerweise kann ich nichts finden, das darüber zu diskutieren.

Antwort

74

Die Doppelpunkte wurden in früheren Versionen als ein Konzept zum Speichern von Namespace-Daten verwendet. In früheren Versionen nur Strings unterstützt Redis, wenn Sie die E-Mail und das Alter von ‚bob‘ speichern wollte, musste man alles als String speichern, so Doppelpunkte verwendet wurden:

SET user:bob:email [email protected] 
SET user:bob:age 31 

Sie hatte keine Sonder Handhabung oder Leistungsmerkmale in redis, der einzige Zweck war Namespacing die Daten, um es wieder zu finden. Heutzutage kann man Hashes verwenden die meisten der coloned Schlüssel zu speichern:

HSET user:bob email [email protected] 
HSET user:bob age 31 

Sie müssen den Hash nicht nennen „user: bob“ wir „bob“ nennen könnte, aber es mit dem Benutzer-Präfix Namensräume Wir wissen sofort, welche Informationen dieser Hash haben sollte/könnte.

+1

Vielen Dank, genau das, was ich wissen musste :) – Ryan

+2

Ich frage mich, warum ':' wurde gewählt, wenn '.' In verschiedenen Sprachen für diese Art von Sache häufiger scheint. – CivFan

+2

Vielleicht, um genau zu sein von dem Punkt-Operator, der in den meisten Sprachen für Objektzugriff verwendet wird –

30

Colons sind eine Möglichkeit, die Schlüssel zu strukturieren. Sie werden von redis in keiner Weise interpretiert. Sie können auch jedes andere Trennzeichen verwenden, das Ihnen gefällt oder nicht. Ich persönlich bevorzuge /, wodurch meine Schlüssel wie Dateisystempfade aussehen. Sie haben keinen Einfluss auf die Leistung, aber Sie sollten sie nicht übermäßig lange machen, da redis alle Schlüssel im Speicher behalten muss.

Eine gute Schlüsselstruktur ist wichtig, um die Stärke des Befehls sort zu nutzen, der die Antworten von redis auf den Join von SQL darstellt.

Sie können sehen, dass die Schlüsselstruktur es SORT ermöglicht, die Farben des Benutzers durch Verweis auf die strukturierten Schlüssel nachzuschlagen.

+1

Verwenden von/ist ein großer Vorschlag! –