Heim Datenbank Redis Wissen Sie, wie Sie eine hohe Parallelität von Redis sicherstellen können?

Wissen Sie, wie Sie eine hohe Parallelität von Redis sicherstellen können?

Nov 10, 2020 pm 02:52 PM
redis

Nachfolgend erfahren Sie in der Spalte „Redis-Tutorial“, wie Sie eine hohe Parallelität von Redis sicherstellen können. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!

  Es ist fast unmöglich, dass ein eigenständiger Redis eine QPS von mehr als 100.000+ hat, normalerweise im Zehntausendbereich.

Sofern keine besonderen Umstände vorliegen, z. B. wenn die Leistung Ihrer Maschine besonders gut ist, die Konfiguration besonders hoch ist, die physische Maschine besonders gut gewartet ist und Ihr Gesamtbetrieb nicht zu kompliziert ist.

Redis verwendet eine Master-Slave-Architektur, um Lesen und Schreiben zu trennen. Der Master-Knoten ist für das Schreiben und Synchronisieren von Daten mit anderen Slave-Knoten verantwortlich, und die Slave-Knoten sind für das Lesen verantwortlich, wodurch eine hohe Parallelität erreicht wird .

Redis verfügt nicht nur über eine hohe Parallelität, sondern muss auch eine große Datenmenge aufnehmen: einen Master und mehrere Slaves, und jede Instanz bietet Platz für vollständige Daten. Beispielsweise verfügt der Redis-Master nur über 10 GB Speicher. Tatsächlich können nur 10 g Daten gespeichert werden. Wenn Ihr Cache eine große Datenmenge aufnehmen muss, die mehrere zehn Gigabyte oder sogar Hunderte von Gigabyte oder mehrere Tonnen erreicht, dann benötigen Sie einen Redis-Cluster, und mit dem Redis-Cluster können Sie Hunderttausende Daten pro Sekunde bereitstellen. Lesen und schreiben Sie gleichzeitig.

Der Kernmechanismus der Replikation

Redis verwendet eine asynchrone Methode, um Daten auf den Slave-Knoten zu kopieren, aber ab Redis 2.8 bestätigt der Slave-Knoten regelmäßig die Datenmenge, die er jedes Mal kopiert

Ein Master-A-Knoten kann mit mehreren Slave-Knoten konfiguriert werden
Der Slave-Knoten kann sich auch mit anderen Slave-Knoten verbinden
Wenn der Slave-Knoten repliziert, blockiert er nicht die normale Arbeit des Master-Knotens
Wenn der Kopiervorgang abgeschlossen ist, blockiert der Slave-Knoten nicht seinen eigenen Abfragevorgang und verwendet den alten Datensatz zur Bereitstellung von Diensten. Wenn der Kopiervorgang jedoch abgeschlossen ist, muss der alte Datensatz gelöscht und der neue aktualisiert werden Der Datensatz wird geladen und externe Dienste werden zu diesem Zeitpunkt ausgesetzt.
 Der Slave-Knoten wird hauptsächlich für die horizontale Erweiterung und Trennung von Lesen und Schreiben verwendet. Der erweiterte Slave-Knoten kann den Lesedurchsatz verbessern der Master-Persistenz für die Sicherheit der Master-Slave-Architektur
Wenn Sie eine Master-Slave-Architektur haben, wird empfohlen, die Persistenz des Masterknotens zu aktivieren!

Es wird nicht empfohlen, den Slave-Knoten als Daten-Hot-Backup des Master-Knotens zu verwenden, da in diesem Fall, wenn Sie die Persistenz des Masters deaktivieren, die Daten möglicherweise leer sind, wenn der Master abstürzt und neu startet. und dann werden die Knotendaten möglicherweise auch gelöscht. Zweitens: Möchten Sie dies tun? Wählen Sie eine RDB aus Backup zum Wiederherstellen des Masters; dies kann sicherstellen, dass der Master startet, wenn Daten vorhanden sind. Der Prozess der Synchronisierung von Daten durch den Master mit dem Slave erfolgt Senden Sie einen PSYNC-Befehl an den Master-Knoten. Wenn dies der Slave-Knoten ist, der sich erneut mit dem Master-Knoten verbindet, kopiert der Master-Knoten nur die fehlenden Daten an den Slave Beim ersten Mal wird eine vollständige Neusynchronisierung ausgelöst

Wenn die vollständige Neusynchronisierung beginnt, startet der Master einen Hintergrundthread, beginnt mit der Generierung einer RDB-Snapshot-Datei und speichert außerdem alle vom Client empfangenen Schreibbefehle im Speicher zwischen.

Nachdem die RDB-Datei generiert wurde, sendet der Master die RDB an den Slave. Der Slave schreibt sie zunächst auf die lokale Festplatte und lädt sie dann von der lokalen Festplatte in den Speicher. Anschließend sendet der Master die im Speicher zwischengespeicherten Schreibbefehle an den Slave und der Slave synchronisiert ebenfalls die Daten.

 Wenn der Slave-Knoten einen Netzwerkfehler mit dem Master-Knoten hat und die Verbindung getrennt wird, wird die Verbindung automatisch wiederhergestellt. Wenn der Master feststellt, dass mehrere Slave-Knoten die Verbindung wiederherstellen, startet er lediglich einen RDB-Speichervorgang und versorgt alle Slave-Knoten mit einer Kopie der Daten.

Setzen Sie den Haltepunkt der Master-Slave-Replikation fort

Ab Redis 2.8 wird die Wiederaufnahme der Master-Slave-Replikation am Haltepunkt unterstützt. Wenn die Netzwerkverbindung während des Master-Slave-Replikationsprozesses unterbrochen wird, können Sie mit dem Kopieren an der Stelle fortfahren, an der Sie zuletzt kopiert haben, anstatt am Anfang zu beginnen Der Knoten speichert einen Rückstand im Speicher. Sowohl der Master als auch der Slave speichern einen Replikat-Offset und eine Master-ID.

Wenn die Netzwerkverbindung zwischen Master und Slave getrennt wird, lässt der Slave den Master vom letzten Replikat-Offset weiter kopieren.

Wenn der entsprechende Offset jedoch nicht gefunden wird, wird eine Neusynchronisierung durchgeführt

Diskless-Replikation

Der Master erstellt RDB direkt im Speicher und sendet es dann an den Slave. Die Festplatte wird nicht lokal gespeichert -sync-delay: Warten Sie eine bestimmte Zeit, bevor Sie mit der Replikation beginnen, da Sie darauf warten müssen, dass sich weitere Slaves wieder verbinden Warten Sie, bis der Master den Schlüssel abläuft.

Wenn der Master einen Schlüssel abläuft oder einen Schlüssel über LRU eliminiert, wird ein Del-Befehl simuliert und an den Slave gesendet.


Der vollständige Replikationsprozess

Der Slave-Knoten startet und speichert nur die Informationen des Master-Knotens, einschließlich des Hosts und der IP des Master-Knotens (konfiguriert durch Slaveof in redis.conf). aber der Replikationsprozess startet nicht

Es gibt eine geplante Aufgabe im Slave-Knoten, die jede Sekunde prüft, ob ein neuer Master-Knoten zum Verbinden und Kopieren vorhanden ist, und eine Socket-Netzwerkverbindung mit dem Master herstellt Knoten

Der Slave-Knoten sendet einen Ping-Befehl an den Master-Knoten

 Passwortauthentifizierung, wenn der Master „requirepass“ festlegt, muss der Slave-Knoten das Masterauth-Passwort zur Authentifizierung senden

 Der Masterknoten führt zunächst eine vollständige Replikation durch Zeit und sendet alle Daten an den Slave-Knoten Vollständige Kopie, die ausgeführt wird, wenn der Slave zum ersten Mal eine Verbindung zu msater herstellt, und einige Ihrer detaillierten Mechanismen in diesem Prozess

(1) Sowohl Master als auch Slave behalten einen Offset bei

Der Master sammelt kontinuierlich Offsets auf sich selbst , und der Slave sammelt auch kontinuierlich Offsets für sich selbst. Der Slave meldet dem Master jede Sekunde seinen eigenen Offset, und der Master speichert auch den Offset jedes Slaves. Dies bedeutet nicht, dass dies spezifisch ist Wird für die vollständige Replikation verwendet. Der Hauptgrund ist, dass sowohl der Master als auch der Slave den Offset ihrer eigenen Daten kennen müssen, um die Inkonsistenz der Daten untereinander zu erkennen. (2) Rückstand Der Masterknoten hat einen Rückstand, die Standardgröße beträgt 1 MB

Wenn der Master-Knoten Daten auf den Slave-Knoten kopiert, schreibt er auch synchron eine Kopie der Daten in den Rückstand
Der Rückstand wird hauptsächlich für die inkrementelle Replikation bei vollständiger Replikation verwendet ist unterbrochen
(3) Master-Lauf-ID
Infoserver, Sie können die Master-Lauf-ID sehen
Wenn Sie den Master-Knoten anhand von Host + IP finden, ist es unzuverlässig, wenn der Master-Knoten neu startet Wenn sich die Daten ändern, sollte der Slave-Knoten anhand verschiedener Ausführungs-IDs unterschieden werden. Wenn Sie Redis neu starten müssen, ohne die Ausführungs-ID zu ändern, können Sie redis-cli verwenden Debug-Reload-Befehl

(4) psync

Der Slave-Knoten verwendet psync, um den Runid-Offset vom Master-Knoten zu kopieren. Der Master-Knoten gibt Antwortinformationen entsprechend seiner eigenen Situation zurück Runid-Offset, der die vollständige Replikation auslöst, oder es kann sich um eine inkrementelle Kopie handeln

 Der Master führt bgsave aus und generiert lokal eine RDB-Snapshot-Datei
 Wenn die RDB-Kopierzeit 60 Sekunden überschreitet (Repl-Timeout), berücksichtigt der Slave-Knoten dies Der Kopiervorgang ist fehlgeschlagen. Dieser Parameter kann entsprechend angepasst werden. Bei Computern mit Gigabit-Netzwerkkarten werden im Allgemeinen 100 MB und 6 GB Dateien pro Sekunde übertragen, was wahrscheinlich mehr als 60 Sekunden dauert. Wenn der Masterknoten RDB generiert, wird er zwischengespeichert Alle neuen Schreibbefehle im Speicher. Nachdem der Salve-Knoten die RDB gespeichert hat, kopieren Sie den neuen Schreibbefehl auf den Salve-Knoten
 client-output-buffer-limit Slave 256 MB 64 MB 60, wenn der Speicherpuffer weiterhin mehr als 64 MB verbraucht Während des Kopiervorgangs oder einmalig. Wenn die Größe 256 MB überschreitet, wird der Kopiervorgang beendet und der Kopiervorgang schlägt fehl Gleichzeitig werden externe Dienste basierend auf der alten Datenversion bereitgestellt. Wenn der Slave-Knoten AOF aktiviert ist, wird BGREWRITEAOF sofort ausgeführt, um AOF neu zu schreiben. Die Slave-Netzwerkverbindung wird während des vollständigen Kopiervorgangs getrennt. Wenn der Salve dann wieder eine Verbindung zum Master herstellt, löst er eine inkrementelle Replikation aus
Der Master ruft einen Teil der verlorenen Daten direkt aus seinem eigenen Backlog ab und sendet sie an den Slave-Knoten Das Standard-Backlog beträgt 1 MB.
msater erhält Daten aus dem Backlog basierend auf dem vom Slave gesendeten Offset in psync. BHeartBeat

Der Hauptknoten sendet HeartBeat-Informationen Knoten sendet alle 1 Sekunde einen HeartBeat

asynchrone Kopie

 Jedes Mal, wenn der Master einen Schreibbefehl empfängt, schreibt er nun intern Daten und sendet sie dann asynchron an den Slave-Knoten

Das obige ist der detaillierte Inhalt vonWissen Sie, wie Sie eine hohe Parallelität von Redis sicherstellen können?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So erstellen Sie den Redis -Clustermodus So erstellen Sie den Redis -Clustermodus Apr 10, 2025 pm 10:15 PM

Der Redis -Cluster -Modus bietet Redis -Instanzen durch Sharding, die Skalierbarkeit und Verfügbarkeit verbessert. Die Bauschritte sind wie folgt: Erstellen Sie ungerade Redis -Instanzen mit verschiedenen Ports; Erstellen Sie 3 Sentinel -Instanzen, Monitor -Redis -Instanzen und Failover; Konfigurieren von Sentinel -Konfigurationsdateien, Informationen zur Überwachung von Redis -Instanzinformationen und Failover -Einstellungen hinzufügen. Konfigurieren von Redis -Instanzkonfigurationsdateien, aktivieren Sie den Cluster -Modus und geben Sie den Cluster -Informationsdateipfad an. Erstellen Sie die Datei nodes.conf, die Informationen zu jeder Redis -Instanz enthält. Starten Sie den Cluster, führen Sie den Befehl erstellen aus, um einen Cluster zu erstellen und die Anzahl der Replikate anzugeben. Melden Sie sich im Cluster an, um den Befehl cluster info auszuführen, um den Clusterstatus zu überprüfen. machen

So löschen Sie Redis -Daten So löschen Sie Redis -Daten Apr 10, 2025 pm 10:06 PM

So löschen Sie Redis -Daten: Verwenden Sie den Befehl Flushall, um alle Schlüsselwerte zu löschen. Verwenden Sie den Befehl flushdb, um den Schlüsselwert der aktuell ausgewählten Datenbank zu löschen. Verwenden Sie SELECT, um Datenbanken zu wechseln, und löschen Sie dann FlushDB, um mehrere Datenbanken zu löschen. Verwenden Sie den Befehl del, um einen bestimmten Schlüssel zu löschen. Verwenden Sie das Redis-Cli-Tool, um die Daten zu löschen.

So verwenden Sie den Befehl Redis So verwenden Sie den Befehl Redis Apr 10, 2025 pm 08:45 PM

Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err).

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

So lesen Sie den Quellcode von Redis So lesen Sie den Quellcode von Redis Apr 10, 2025 pm 08:27 PM

Der beste Weg, um Redis -Quellcode zu verstehen, besteht darin, Schritt für Schritt zu gehen: Machen Sie sich mit den Grundlagen von Redis vertraut. Wählen Sie ein bestimmtes Modul oder eine bestimmte Funktion als Ausgangspunkt. Beginnen Sie mit dem Einstiegspunkt des Moduls oder der Funktion und sehen Sie sich die Codezeile nach Zeile an. Zeigen Sie den Code über die Funktionsaufrufkette an. Kennen Sie die von Redis verwendeten Datenstrukturen. Identifizieren Sie den von Redis verwendeten Algorithmus.

So verwenden Sie Redis Lock So verwenden Sie Redis Lock Apr 10, 2025 pm 08:39 PM

Um die Operationen zu sperren, muss die Sperre durch den Befehl setNX erfasst werden und dann den Befehl Ablauf verwenden, um die Ablaufzeit festzulegen. Die spezifischen Schritte sind: (1) Verwenden Sie den Befehl setNX, um zu versuchen, ein Schlüsselwertpaar festzulegen; (2) Verwenden Sie den Befehl Ablauf, um die Ablaufzeit für die Sperre festzulegen. (3) Verwenden Sie den Befehl Del, um die Sperre zu löschen, wenn die Sperre nicht mehr benötigt wird.

So lesen Sie Redis -Warteschlange So lesen Sie Redis -Warteschlange Apr 10, 2025 pm 10:12 PM

Um eine Warteschlange aus Redis zu lesen, müssen Sie den Warteschlangenname erhalten, die Elemente mit dem Befehl LPOP lesen und die leere Warteschlange verarbeiten. Die spezifischen Schritte sind wie folgt: Holen Sie sich den Warteschlangenname: Nennen Sie ihn mit dem Präfix von "Warteschlange:" wie "Warteschlangen: My-Queue". Verwenden Sie den Befehl LPOP: Wischen Sie das Element aus dem Kopf der Warteschlange aus und geben Sie seinen Wert zurück, z. B. die LPOP-Warteschlange: my-queue. Verarbeitung leerer Warteschlangen: Wenn die Warteschlange leer ist, gibt LPOP NIL zurück, und Sie können überprüfen, ob die Warteschlange existiert, bevor Sie das Element lesen.

So erstellen Sie Message Middleware für Redis So erstellen Sie Message Middleware für Redis Apr 10, 2025 pm 07:51 PM

Redis unterstützt als Messing Middleware Modelle für Produktionsverbrauch, kann Nachrichten bestehen und eine zuverlässige Lieferung sicherstellen. Die Verwendung von Redis als Message Middleware ermöglicht eine geringe Latenz, zuverlässige und skalierbare Nachrichten.

See all articles