Heim  >  Artikel  >  Datenbank  >  So erstellen Sie einen Cluster in Redis

So erstellen Sie einen Cluster in Redis

(*-*)浩
(*-*)浩Original
2019-11-20 15:05:522469Durchsuche

So erstellen Sie einen Cluster in Redis

Redis Sharding Cluster

Redis 3 hat offiziell die offizielle Cluster-Technologie eingeführt und damit das Problem des kollaborativen Dienstes mit mehreren Redis-Instanzen gelöst. Redis-Cluster kann als Verkörperung der serverseitigen Sharding-Technologie bezeichnet werden, was bedeutet, dass Schlüsselwerte jedem Instanz-Shard gemäß einem bestimmten Algorithmus zugewiesen werden. Gleichzeitig koordiniert und kommuniziert jeder Instanzknoten, um ihn gemeinsam bereitzustellen konsistente externe Dienstleistungen. (Empfohlenes Lernen: Redis-Video-Tutorial)

Mehrere Redis-Instanzdienste sind viel komplizierter als einzelne Redis-Instanzen, die technische Probleme wie Positionierung, Zusammenarbeit, Fehlertoleranz usw. mit sich bringen Erweiterung. Hier stellen wir eine leichte clientseitige Redis-Sharding-Technologie vor.

Redis Sharding kann als eine Multi-Redis-Instanz-Clustering-Methode bezeichnet werden, die vor der Veröffentlichung von Redis Cluster in der Branche häufig verwendet wurde. Die Hauptidee besteht darin, einen Hash-Algorithmus zu verwenden, um den Schlüssel von Redis-Daten zu hashen. Durch die Hash-Funktion wird ein bestimmter Schlüssel einem bestimmten Redis-Knoten zugeordnet. Auf diese Weise weiß der Client, auf welchem ​​Redis-Knoten er Daten verarbeiten muss.

Glücklicherweise unterstützt der Java-Redis-Client-Treiber jedis bereits die Redis-Sharding-Funktion, nämlich ShardedJedis und ShardedJedisPool in Kombination mit dem Cache-Pool.

Die Redis Sharding-Implementierung von Jedis weist die folgenden Merkmale auf:

Verwendung eines konsistenten Hashing-Algorithmus (konsistentes Hashing), gleichzeitiges Hashing des Schlüssels und des Knotennamens und Anschließend führen wir Mapping und Matching durch. Der verwendete Algorithmus ist MURMUR_HASH.

Der Hauptgrund für die Verwendung von konsistentem Hashing anstelle einer einfachen Hash-ähnlichen Modulo-Zuordnung besteht darin, dass beim Hinzufügen oder Reduzieren von Knoten kein erneutes Hashing aufgrund eines erneuten Abgleichs erfolgt. Konsistentes Hashing wirkt sich nur auf die Schlüsselzuweisung benachbarter Knoten aus und die Auswirkung ist gering.

Um zu vermeiden, dass konsistentes Hashing nur benachbarte Knoten betrifft und einen Knotenzuweisungsdruck verursacht, virtualisiert ShardedJedis 160 virtuelle Knoten entsprechend dem Namen jedes Redis-Knotens (andernfalls weist Jedis einen Standardnamen zu).

Je nach Gewicht können auch virtuelle Knoten, die ein Vielfaches von 160 sind, virtualisiert werden. Durch die Verwendung virtueller Knoten für den Mapping-Abgleich können Schlüssel beim Hinzufügen oder Reduzieren von Redis-Knoten verschoben und gleichmäßiger auf Redis-Knoten verteilt werden, anstatt dass nur benachbarte Knoten betroffen sind.

ShardedJedis unterstützt den KeyTagPattern-Modus, bei dem ein Teil des KeyTags für das Sharding extrahiert wird. Auf diese Weise kann durch entsprechende Benennung des Schlüssels eine Gruppe verwandter Schlüssel in denselben Redis-Knoten eingefügt werden, wodurch ein Zugriff vermieden wird Zugehörige Daten über Knoten hinweg. Sehr wichtig.

Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen Cluster in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn