


Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien
redis ist ein Schlüsselwertspeichersystem. Ähnlich wie Memcached unterstützt es relativ mehr gespeicherte Werttypen, einschließlich String (String), Liste (verknüpfte Liste), Set (Satz), Zset (sortierter Satz – geordneter Satz) und Hash (Hash-Typ). Diese Datentypen unterstützen alle Push/Pop-, Add/Remove-, Schnitt-, Vereinigungs-, Differenz- und umfangreichere Operationen und diese Operationen sind alle atomar. Auf dieser Basis unterstützt Redis verschiedene Sortierarten. Wie bei Memcached werden Daten im Speicher zwischengespeichert, um die Effizienz sicherzustellen. Der Unterschied besteht darin, dass Redis regelmäßig aktualisierte Daten auf die Festplatte schreibt oder Änderungsvorgänge in zusätzliche Datensatzdateien schreibt und auf dieser Grundlage eine Master-Slave-Synchronisation (Master-Slave) erreicht wird.
Übersicht
In bestehenden Unternehmen nutzen 80 % der Unternehmen meist den eigenständigen Redis-Dienst. In tatsächlichen Szenarien handelt es sich um einen einzelnen Knoten Redis anfällig für Risiken.
Probleme auftreten
1. Wir stellen es auf einem Redis-Server bereit. Wenn ein Maschinenausfall auftritt, müssen wir auf einen anderen Server migrieren und sicherstellen, dass die Daten synchronisiert sind. Daten sind das Wichtigste. Wenn es Ihnen egal ist, werden Sie Redis grundsätzlich nicht verwenden. 2. Kapazitätsengpass. Wenn wir den Redis-Speicher von 16G auf 64G erweitern müssen, wird eine einzelne Maschine diese Anforderung definitiv nicht erfüllen können. Natürlich können Sie eine neue 128G-Maschine kaufen.
Lösung
Um eine größere Speicherkapazität der verteilten Datenbank zu erreichen und einem hohen gleichzeitigen Zugriff standzuhalten, werden wir die ursprünglichen zentralisierten Daten konvertieren
Die Daten in der Bibliothek werden auf mehreren anderen Netzwerkknoten gespeichert. Um dieses Einzelknotenproblem zu lösen, wird Redis auch mehrere Kopien von Daten aufanderen Knoten zur Replikation bereitstellen, um eine hohe Verfügbarkeit von Redis und eine redundante Datensicherung zu erreichen.
Dies sorgt für die hohe Verfügbarkeit von Daten und Diensten.
Master-Slave-ReplikationWas ist Master-Slave-Replikation?
Master -Slave-Replikation bezieht sich auf das Kopieren von Daten von einem Redis-Server auf andere Redis-Server. Ersterer wird als Master-Knoten (Master) und letzterer als Slave-Knoten (Slave) bezeichnet. Die Datenreplikation erfolgt in eine Richtung und kann nur vom Master-Knoten zum Slave-Knoten erfolgen.
Standardmäßig ist jeder Redis-Server ein Master-Knoten und ein Master-Knoten kann mehrere Slave-Knoten haben (oder keine Slave-Knoten), aber ein Slave-Knoten kann nur einen Master-Knoten haben.
Die Rolle der Master-Slave-Replikation
1. Datenredundanz: Master-Slave-Replikation realisiert Hot-Backup von data ist eine andere Datenredundanzmethode als Persistenz. 2. Fehlerbehebung: Wenn ein Problem auf dem Master-Knoten auftritt, kann der Slave-Knoten Dienste bereitstellen, um eine schnelle Fehlerbehebung zu erreichen
;3. Lastausgleich: Basierend auf der Master-Slave-Replikation in Kombination mit der Lese-Schreib-Trennung kann der Master-Knoten Schreibdienste bereitstellen und die Slave-Knoten können Lesedienste bereitstellen (d. h Beim Schreiben von Redis-Daten stellt die Anwendung eine Verbindung zum Master-Knoten her. Verwenden Sie beim Lesen von Redis-Daten die Verbindung zum Slave-Knoten, um die Serverlast zu teilen, insbesondere in dem Szenario, in dem weniger geschrieben und mehr gelesen wird Slave-Knoten
werden verwendet, um die Leselast zu teilen, was die Parallelität des Redis-Servers erheblich erhöhen kann.4. Lese- und Schreibtrennung: Es kann verwendet werden, um die Lese- und Schreibtrennung, das Schreiben der Hauptbibliothek und das Lesen der Nebenbibliothek zu realisieren. Die Lese- und Schreibtrennung kann nicht nur die Ladekapazität der Server, kann aber auch je nach Bedarf verwendet werden. 5. Der Grundstein für hohe Verfügbarkeit: Master-Slave-Replikation ist auch die Grundlage für die Implementierung von Sentinels und Clustern Daher ist die Master-Slave-Replikation die Grundlage für Redis Hochverfügbarkeit.
Master-Slave-Replikation aktivieren
Master-Slave-Replikation vom Slave-Knoten aktivieren Es gibt 3 Möglichkeiten:
1. Konfigurationsdatei: Zur Konfigurationsdatei des Slave-Servers hinzufügen:
slaveof <masterip> <masterport>
2. Startbefehl:
nach redis-server hinzufügen Startbefehl
--slaveof <masterip> <masterport>
3. 客户端命令: Redis 服务器启动后,直接通过客户端执行命令:
slaveof <masterip> <masterport>
则该 Redis 实例成为从节点。
通过 info replication 命令可以看到复制的一些信息主从复制原理主从复制过程大体可以分为 3 个阶段:连接建立阶段(即准备阶段)、数据同步阶段、命令传播阶段。在从节点执行 slaveof 命令后,复制过程便开始运作,下面图示大概可以看到,从图中可以看出复制过程大致分为 6 个过程
主从配置之后的日志记录也可以看出这个流程
1)保存主节点(master)信息。
执行 slaveof 后 Redis 会打印如下日志:
2)从节点(slave)内部通过每秒运行的定时任务维护复制相关逻辑,当定时任务发现存在新的主节点后,会尝试与该节点建立网络连接
从节点与主节点建立网络连接
从节点会建立一个 socket 套接字,从节点建立了一个端口为 51234 的套接字,专门用于接受主节点发送的复制命令。从节点连接成功后打印如下日志:
如果从节点无法建立连接,定时任务会无限重试直到连接成功或者执行 slaveof noone 取消复制关于连接失败,可以在从节点执行 info replication 查看<span style="font-size: 14px; line-height: 1.76em;">master_link_down_since_seconds</span>
指标,它会记录与主节点连接失败的系统时间。从
节点连接主节点失败时也会每秒打印如下日志,方便发现问题:
# Error condition on socket for SYNC: {socket_error_reason}
3)发送 ping 命令。
连接建立成功后从节点发送 ping 请求进行首次通信,ping 请求主要目的如下:
·检测主从之间网络套接字是否可用。
·检测主节点当前是否可接受处理命令。
如果发送 ping 命令后,从节点没有收到主节点的 pong 回复或者超时,比如网络超时或者主节点正在阻塞无法响应命令,从节点会断开复制连接,下次定时任务会发起重连
从节点发送的 ping 命令成功返回,Redis 打印如下日志,并继续后续复制流程:
4)权限验证。如果主节点设置了 requirepass 参数,则需要密码验证,从节点必须配
置 masterauth 参数保证与主节点相同的密码才能通过验证;如果验证失败复制将终
止,从节点重新发起复制流程。
5)同步数据集。主从复制连接正常通信后,对于首次建立复制的场景,主节点会把持
有的数据全部发送给从节点,这部分操作是耗时最长的步骤。
6)命令持续复制。当主节点把当前的数据同步给从节点后,便完成了复制的建立流程。
接下来主节点会持续地把写命令发送给从节点,保证主从数据一致性。
更多redis知识请关注redis数据库教程栏目。
Das obige ist der detaillierte Inhalt vonEinführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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).

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 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.

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.

Um alle Schlüssel in Redis anzuzeigen, gibt es drei Möglichkeiten: Verwenden Sie den Befehl keys, um alle Schlüssel zurückzugeben, die dem angegebenen Muster übereinstimmen. Verwenden Sie den Befehl scan, um über die Schlüssel zu iterieren und eine Reihe von Schlüssel zurückzugeben. Verwenden Sie den Befehl Info, um die Gesamtzahl der Schlüssel zu erhalten.

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.

Zu den Schritten zum Starten eines Redis -Servers gehören: Installieren von Redis gemäß dem Betriebssystem. Starten Sie den Redis-Dienst über Redis-Server (Linux/macOS) oder redis-server.exe (Windows). Verwenden Sie den Befehl redis-cli ping (linux/macOS) oder redis-cli.exe ping (Windows), um den Dienststatus zu überprüfen. Verwenden Sie einen Redis-Client wie Redis-Cli, Python oder Node.js, um auf den Server zuzugreifen.
