In diesem Artikel erfahren Sie mehr über die Redis-Partitionierung, erfahren, warum Redis-Partitionierung erforderlich ist, zeigen den Implementierungsplan der Redis-Partitionierung auf und erläutern die Mängel der Redis-Partitionierung. Ich hoffe, dass er für alle hilfreich ist!
Redis ist Single-Threaded. Wie kann die Auslastung der Multi-Core-CPU verbessert werden?
Sie können mehrere Redis-Instanzen auf demselben Server bereitstellen und diese als unterschiedliche Server verwenden. Irgendwann reicht ein Server ohnehin nicht aus. Wenn Sie also mehrere CPUs verwenden möchten, können Sie Sharding in Betracht ziehen. [Verwandte Empfehlungen: Redis-Video-Tutorial]
Warum müssen wir Redis partitionieren?
Partitionierung ermöglicht es Redis, größeren Speicher zu verwalten, und Redis kann den Speicher aller Maschinen nutzen. Ohne Partitionen können Sie nur den Arbeitsspeicher einer Maschine nutzen. Durch die Partitionierung lässt sich die Rechenleistung von Redis durch einfaches Hinzufügen von Computern verdoppeln, und auch die Netzwerkbandbreite von Redis wird durch das Hinzufügen von Computern und Netzwerkkarten exponentiell ansteigen.
Was sind die Redis-Partitionsimplementierungslösungen?
1. Clientseitige Partitionierung bedeutet, dass der Client entschieden hat, in welchem Redis-Knoten die Daten gespeichert oder gelesen werden. Die meisten Clients implementieren bereits eine clientseitige Partitionierung.
2. Agent-Partitionierung bedeutet, dass der Client die Anfrage an den Agenten sendet und der Agent dann entscheidet, auf welchen Knoten er Daten schreibt oder liest. Der Agent entscheidet anhand der Partitionsregeln, welche Redis-Instanzen angefordert werden sollen, und gibt sie dann basierend auf den Redis-Antwortergebnissen an den Client zurück. Eine Proxy-Implementierung für Redis und Memcached ist Twemproxy.
3. Abfragerouting bedeutet, dass der Client zufällig eine beliebige Redis-Instanz anfordert und Redis die Anfrage dann an den richtigen Redis-Knoten weiterleitet. Redis Cluster implementiert eine Hybridform des Abfrageroutings, aber anstatt Anfragen direkt von einem Redis-Knoten an einen anderen weiterzuleiten, leitet es mit Hilfe des Clients direkt an den richtigen Redis-Knoten weiter.
Was sind die Nachteile der Redis-Partitionierung?
1. Operationen mit mehreren Schlüsseln werden normalerweise nicht unterstützt. Beispielsweise können Sie zwei Sammlungen nicht überschneiden, da sie möglicherweise in verschiedenen Redis-Instanzen gespeichert sind (eigentlich gibt es für diese Situation eine Möglichkeit, aber der Schnittbefehl kann nicht direkt verwendet werden).
2. Wenn Sie mehrere Schlüssel gleichzeitig bedienen, können Sie keine Redis-Transaktionen verwenden.
3. Die Partitionierungsgranularität ist der Schlüssel, daher ist es nicht möglich, einen Datensatz wie einen sehr großen sortierten Satz zu fragmentieren.
4. Für die Sicherung müssen Sie gleichzeitig RDB/AOF-Dateien von verschiedenen Redis-Instanzen und Hosts sammeln.
5. Die dynamische Expansion oder Kontraktion während der Partitionierung kann sehr kompliziert sein. Der Redis-Cluster fügt zur Laufzeit Redis-Knoten hinzu oder löscht sie, wodurch eine für Benutzer weitgehend transparente Datenverteilung erreicht werden kann. Einige andere Client-Partitionierungs- oder Proxy-Partitionierungsmethoden unterstützen diese Funktion jedoch nicht. Allerdings gibt es eine Pre-Sharding-Technologie, die dieses Problem ebenfalls besser lösen kann.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmiervideos! !
Das obige ist der detaillierte Inhalt vonWarum benötigen Sie eine Redis-Partitionierung? Welche Umsetzungsmöglichkeiten gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!