2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Wenn ein Redis-Knoten (Slave-Knoten) eine Anweisung ähnlich dem Slave von 127.0.0.1 6380 empfängt, bis er weiterhin Daten vom Master kopieren kann, durchläuft er im Allgemeinen den folgenden Prozess:
Wenn der Slave den Befehl „slaveof“ empfängt, speichert der Slave sofort die neue Master-Adresse.
Der Slave verwaltet eine geplante Aufgabe, die versucht, eine Socket-Verbindung mit dem Master herzustellen. Wenn die Verbindung nicht hergestellt werden kann, wird es in regelmäßigen Abständen erneut versucht, bis die Verbindung erfolgreich ist oder der Befehl „slaveof no one“ empfangen wird.
Nachdem die Verbindung erfolgreich hergestellt wurde, sendet der Slave den Ping-Befehl für die erste Kommunikation. Wenn der Slave keine Antwort vom Master erhält, trennt er aktiv die Verbindung und die nächste geplante Aufgabe versucht erneut, die Verbindung herzustellen.
Wenn der Master den Ping-Befehl vom Slave erhält, antwortet er nicht sofort darauf, sondern führt zunächst eine Authentifizierung durch.Wenn die Überprüfung fehlschlägt, wird eine Nachricht gesendet, um die Verbindung abzulehnen. Wenn die Überprüfung erfolgreich ist, wird eine Verbindungserfolgsantwort an den Slave gesendet.
Nachdem die erste Kommunikation erfolgreich war, sendet der Slave eine Datensynchronisierungsanforderung an den Master. Wenn der Master die Anfrage erhält, gibt er einen untergeordneten Prozess aus, sodass der untergeordnete Prozess sofort asynchron beibehalten werden kann.
Nachdem die Persistenz abgeschlossen ist, gibt der Master einen untergeordneten Prozess aus und lässt den untergeordneten Prozess asynchron Daten an den Slave senden. Der Slave schreibt die empfangenen Daten kontinuierlich in die lokale Persistenzdatei.
Während des Slave-Datensynchronisationsprozesses akzeptiert der Hauptprozess des Masters weiterhin kontinuierlich Schreibvorgänge vom Client und schreibt nicht nur neue Daten in den Master-Speicher, sondern auch in den Synchronisationscache. Nachdem die Daten in der Persistenzdatei des Masters gesendet wurden, sendet der Master die neuen Daten im Synchronisationscache an den Slave und der Slave schreibt sie in die lokale Persistenzdatei.Datensynchronisierung abgeschlossen
Wenn die Datensynchronisierung zwischen Slave und Master abgeschlossen ist, liest der Slave die lokale persistente Datei, stellt sie im lokalen Speicher wieder her und stellt dann externe Lesedienste bereit.
Während der Slave externe Dienste bereitstellt, sendet der Master kontinuierlich inkrementell neue Daten an den Slave, um die Konsistenz der Master-Slave-Daten sicherzustellen.