Namenskonvention und gültige Zeichen für einen Redis-Schlüssel

74

Ich habe mich gefragt, welche Zeichen in einem Redis-Schlüssel als gültig angesehen werden. Ich habe einige Zeit gegoogelt und kann keine nützlichen Informationen finden.

Wie in Python sollte ein gültiger Variablenname zur Klasse gehören [a-zA-Z0-9_]. Was sind die Anforderungen und Konventionen für Redis-Schlüssel?

Andy
quelle

Antworten:

108

Ein Teil davon wird hier beantwortet , aber dies ist kein vollständiges Duplikat, da Sie nach zulässigen Zeichen und Konventionen fragen.

In Bezug auf gültige Zeichen in Redis-Tasten wird dies im Handbuch vollständig erklärt :

Redis-Schlüssel sind binärsicher. Dies bedeutet, dass Sie eine beliebige Binärsequenz als Schlüssel verwenden können, von einer Zeichenfolge wie "foo" bis zum Inhalt einer JPEG-Datei. Die leere Zeichenfolge ist auch ein gültiger Schlüssel.

Einige andere Regeln zu Schlüsseln:

Sehr lange Schlüssel sind keine gute Idee, zum Beispiel ist ein Schlüssel mit 1024 Bytes eine schlechte Idee, nicht nur in Bezug auf den Speicher, sondern auch, weil das Nachschlagen des Schlüssels im Datensatz mehrere kostspielige Schlüsselvergleiche erfordern kann. Selbst wenn die Aufgabe darin besteht, die Existenz eines großen Werts abzugleichen, ist es eine bessere Idee, auf das Hashing zurückzugreifen (z. B. mit SHA1), insbesondere unter dem Gesichtspunkt des Speichers und der Bandbreite.

Sehr kurze Tasten sind oft keine gute Idee. Es macht wenig Sinn, "u1000flw" als Schlüssel zu schreiben, wenn Sie stattdessen "user: 1000: follers" schreiben können. Letzteres ist besser lesbar und der hinzugefügte Speicherplatz ist im Vergleich zu dem vom Schlüsselobjekt selbst und dem Wertobjekt verwendeten Speicherplatz gering. Während Kurztasten offensichtlich etwas weniger Speicher verbrauchen, besteht Ihre Aufgabe darin, die richtige Balance zu finden.

Versuchen Sie, sich an ein Schema zu halten. Zum Beispiel ist "Objekttyp: ID" eine gute Idee, wie in "Benutzer: 1000". Punkte oder Bindestriche werden häufig für Mehrwortfelder verwendet, wie in "Kommentar: 1234: reply.to" oder "Kommentar: 1234: reply-to".

Die maximal zulässige Schlüsselgröße beträgt 512 MB.

Wille
quelle
1
Können wir hier also Platz im Schlüsselnamen haben?
Vipul Jain
3
@Vipul: Ja, "dies bedeutet, dass Sie eine beliebige Binärsequenz als Schlüssel verwenden können", obwohl Sie in der Befehlszeile Anführungszeichen um diesen Schlüssel setzen müssen, da dies sonst SET some key my valuenicht funktioniert SET "some key" "my value".
J Boschiero
1
Erstellt ':' im Schlüsselnamen Indizes in Redis?
Pankhuri Agarwal
2
@PankhuriAgarwal nein, Doppelpunkt ist nur ein praktisches Trennzeichen. Beispielsweise gruppieren einige GUIs Schlüssel in einer baumartigen Struktur nach Doppelpunkten. Und in Redis gibt es keine Indizes im traditionellen Sinne.
Andrejcha
Gibt es einen Unterschied zwischen Doppelpunkt und Unterstreichung in der Redis-Taste? wie "user: 1000: follers" und "user_10000_followers"
Kingname