Redis Cluster Keyslot

Redis Cluster Keyslot

Redis hohe Verfügbarkeit

Redis ist ein in erinnertem Datenspeicher mit niedrigem Latenz, der die Sharding- und Replikationsfunktionen außerhalb der Box bietet. Es sorgt für die hohe Verfügbarkeit der Redis -Instanz an seine Stakeholder. Die folgenden zwei Mechanismen wurden im Redis -Datenspeicher verwendet, um eine hohe Verfügbarkeit zu gewährleisten.

  • Horizontale Skalierung mit Clustering
  • Redis Sentinel

Die horizontale Skalierung konzentriert sich immer darauf, die Anzahl der Instanzen zu erhöhen, anstatt die Rechenleistung pro Instanz zu erweitern. Redis -Clustering basiert auf einer horizontalen Skalierung, bei der eine Reihe von Knoten die kontinuierliche Funktionen der Instanz kümmert.

Redis -Cluster

Redis -Cluster besteht aus mehreren Knoten, bei denen jeder Knoten einen Bereich von Hash -Slots enthält. Normalerweise hat ein Cluster 16384 Hash -Slots. Jeder Redis -Schlüssel ist mit einem Hash -Steckplatz verbunden und um den Hash -Steckplatz pro Schlüssel zu berechnen, verwendet Redis den CRC16 des Redis -Schlüsselmodulo 16384 -Algorithmen. Es basiert auf der Master-Replica.

Nehmen wir an, dass der Knoten X aufgrund eines Netzwerkfehlers fehlschlägt. Anschließend weist der Redis -Cluster dem Replikatknoten X1 die Arbeitsbelastung des Knotens x zu, wodurch eine reibungslose Funktionsweise gewährleistet. Außerdem können Redis -Cluster die eingehenden Daten automatisch auf verschiedene Knoten teilen.

Redis Cluster -Befehle

Für Redis -Cluster stehen mehrere Befehle zur Verfügung. Der Clusterbefehl ist ein Containerbefehl mit mehreren Unterbewohnern. Du kannst den ... benutzen Cluster Hilfe Unterbefehl, um die Liste der verfügbaren Unterbefehle mit ihrer Verwendung zu überprüfen.

Clusterhilfe

Wie erwartet gibt es eine Array -Antwort zurück, wie im folgenden gezeigt.

Ausgang:

In diesem Leitfaden werden wir uns auf die konzentrieren Keyslot Unterkommando, der dem Befehl Container zugeordnet ist Cluster.

Redis Keyslot -Befehl

Der Keyslot Der Befehl wird verwendet, um den Hash -Slot -Wert für einen bestimmten Redis -Schlüssel zu überprüfen, der einen Ganzzahlwert zurückgibt. Wenn Sie über den zugehörigen Knoten für einen bestimmten Schlüssel wissen müssen, ist dieser Befehl nützlich. Ein weiterer Anwendungsfall wäre, wenn Sie Ihre Hashing -Algorithmen testen, indem Sie sie mit den durch diesen Befehl erzeugten Hashes vergleicht und nach Ähnlichkeit prüft. zusätzlich Keyslot Der Befehl hat eine lineare Zeitkomplexität.

Syntax

Das Folgende ist die Syntax für die Redis Keyslot Unterbefehl.

Cluster Keyslot Redis_Key

redis_key: Dies ist die eindeutige Kennung, die wir in Redis -Datenspeichern verwenden, um den gespeicherten Wert zu identifizieren.

Dieser Befehl gibt den Hash -Slot -Wert des angegebenen Redis -Schlüssels zurück, der gespeichert ist. Normalerweise ist dieser Wert eine Ganzzahl von 0 bis 16383 für einen bestimmten Cluster.

Beispiel 01 - Überprüfen Sie den Hash -Slot- und Clusterknoten für einen bestimmten Schlüssel

Erstellen wir einen Redis -Cluster mit sechs Knoten, an denen drei von ihnen Master -Knoten sind, und der Rest sind Repliken. Wir können die verwenden SCHLÜSSEL Unterbefehl, um zu überprüfen, wie die Knoten mit den Hash -Slots zugewiesen wurden.

Cluster -Slots

Wie erwartet wurden die Clusterinformationen wie im Folgenden ausgegeben.

Fügen wir unserem Redis -Cluster ein paar Schlüssel hinzu, wie im Folgenden gezeigt.

Reisende setzen: 1: Platzieren Sie Frankreich
Reisende setzen: 2: Indien platzieren

Jetzt können wir die verwenden Keyslot Unterbefehl, um zu überprüfen, welche Hash -Slots jeder Schlüssel zugewiesen wurde.

Cluster Keyslot -Reisender: 1: Ort

Die Ausgabe sieht aus wie die folgenden.

Es gab die Ganzzahl 8963 zurück, was bedeutet, dass der Hash -Slot 8963 ist. Es sollte im Bereich 5461 - 10922 liegen, der in der folgenden Ausgabe gezeigt ist.

Der Masterknoten ist 6001, und dieser Schlüssel sollte dort gespeichert werden. Das gleiche Verfahren kann befolgt werden, um den Knoten für die zu identifizieren Reisender: 2: Platz Taste.

Beispiel 02 - Umgang mit mehreren Tasten mit demselben Redisknoten

Der Keyslot Der Befehl unterstützt Hashtags, bei denen der Redis -Cluster -Hashing -Algorithmus -Hashes nur die Charaktere zwischen dem Und . Wenn ein Redis -Schlüssel dem genannten Muster folgt, erzeugt er den Hash -Steckplatz basierend auf den Zeichen innerhalb der lockigen Klammern, und die anderen Zeichen werden nicht berücksichtigt. Mit den Hashtags können wir zwingen, mehrere Schlüssel im selben Knoten zu speichern, wie im Folgenden gezeigt.

Erstellen wir ein paar Schlüsselwertpaare, wie im Folgenden gezeigt.

Setzen Sie Benutzer: 1: carbolor common_hash rot
Setzen Sie Benutzer: 2: carbolor common_hash blau

Wie im Beispiel gezeigt, enthalten die Schlüssel den gemeinsamen Hashtag Common_hash. Daher werden beide Hash -Schlitzwerte, die durch den Hashing -Algorithmus des Redis -Cluster -Schlüssels erzeugt werden, für beide Schlüssel gleich sein. Überprüfen wir die Hash -Slots für beide Schlüssel mit dem Keyslot Unterbefehl, wie im Folgenden gezeigt.

Cluster Keyslot -Benutzer: 2: carbolor Common_hash
Cluster Keyslot -Benutzer: 1: carbolor Common_hash

Wie erwartet gibt beide Befehle denselben Hash -Slot -Wert 8276 zurück, was bedeutet, dass Schlüssel im selben Knoten gespeichert werden. Nach den oben genannten Beispielen können Sie sehen, wie nützlich die Keyslot Der Befehl ist beim Umgang mit Redis -Clustern.

Abschluss

Zusammenfassend unterstützt Redis Sharding, Replikation und hohe Verfügbarkeit durch horizontale Skalierung. Die horizontale Skalierung wurde mit den Redis -Clustern erreicht. Wie erläutert, handelt es sich bei jedem Cluster um eine Sammlung von Knoten, bei denen ein Knoten mehrere Hash -Slots halten kann. Ein Cluster kann 16384 maximale Hash -Slots und rund 1000 Knoten halten. Redis-Cluster folgen der Master-Replica. Redis verfügt über eine Liste von Befehlen, um Cluster zu operieren. Der Keyslot Der Befehl ist einer von denen, die verwendet werden, um den Hash -Slot -Wert für einen bestimmten Redis -Schlüssel zu erhalten. Dieser Befehl unterstützt auch die Hashtags.