❝Ich glaube, dass viele Freunde die Master-Slave-Replikation bereits konfiguriert haben, aber sie haben kein tiefes Verständnis für den Workflow und die häufigen Probleme der Redis-Master-Slave-Replikation. Kaka hat dieses Mal zwei Tage mit dem Kompilieren verbracht Eine Kopie für Sie. Alle Wissenspunkte zur Redis-Master-Slave-Replikation. Ich werde später einige Wissenspunkte hinzufügen, die nicht im Artikel enthalten sind. Ich freue mich auch darauf, Sie im Kommentarbereich zu sehen. 1. Was ist Redis Master-Slave-Replikation?
Receive-Daten aus dem Sklavenknoten und führen Sie Bgrewriteaof aus, um die Daten wiederherzustellen. Dieser Prozess ist die umfassendste Master-Slave-Replikation. Vollständige Prozesserklärung. Lassen Sie uns jeden Schritt des Prozesses kurz vorstellen
Finden Sie den entsprechenden <code style="overflow-wrap: break-word; margin: 0px 2px; font-family: " operator mono consolas monaco menlo monospace word-break: break farbe: rgba randradius:> runid
Frägt Daten an. Hier können Sie jedoch berücksichtigen, dass der Slave-Knoten beim ersten Verbinden den runid und offset
. Der erste gesendete Befehl ist also psync? 1
bedeutet, dass ich alle Daten des Masterknotens haben möchte. psync ? 1 psync runid offset
找对应的runid
索取数据。但是这里可以考虑一下,当从节点第一次连接的时候根本就不知道主节点的runid 和 offset
。所以第一次发送的指令是psync ? 1
意思就是主节点的数据我全要。psync runid offset
2
Empfangen Sie +FULLRESYNC vom Slave-Knoten, speichern Sie die Runid und den Offset des Master-Knotens, löschen Sie dann alle aktuellen Daten, empfangen Sie die RDB-Datei über den Socket und beginnen Sie mit der Wiederherstellung der RDB-Daten. 🎜🎜🎜🎜Nach dem vollständigen Kopieren hat der Slave-Knoten die Runid und den Offset des Master-Knotens erhalten und mit dem Senden von Anweisungen begonnen
psync runid offset
🎜🎜🎜🎜Der Masterknoten empfängt die Anweisung, bestimmt, ob die Runid übereinstimmt und ob sich der Offset im Kopierpuffer befindet. 🎜🎜🎜🎜Wenn der Masterknoten feststellt, dass eine der Runids und Offsets nicht erfüllt ist, kehrt er zum Schritt zurück2
Führen Sie den vollständigen Kopiervorgang fort. Die Nichtübereinstimmung der Runids ist möglicherweise nur auf den Neustart des Slave-Knotens zurückzuführen. Die Nichtübereinstimmung des Offsets (Offset) ist der Überlauf des Replikationsrückstands. Wenn die Runid- oder Offset-Prüfung erfolgreich ist und der Offset des Slave-Knotens mit dem Offset des Master-Knotens übereinstimmt, wird er ignoriert. Wenn die Runid- oder Offset-Prüfung erfolgreich ist und sich der Offset des Slave-Knotens vom Offset unterscheidet, wird der +CONTINUE-Offset (dieser Offset gehört zum Master-Knoten) gesendet und die Daten vom Slave-Knoten-Offset zum Master-Knoten-Offset gesendet Der Replikationspuffer wird über den Socket gesendet. 🎜🎜🎜🎜Empfangen Sie +CONTINUE vom Knoten und speichern Sie den Offset des Masters. Führen Sie nach dem Empfang der Informationen über den Socket bgrewriteaof aus, um die Daten wiederherzustellen. 🎜🎜🎜🎜🎜 „1-4 sind vollständige Kopien, 5-8 sind Teilkopien“🎜🎜In Schritt 3 des Masterknotens hat der Masterknoten während des Master-Slave-Replikationszeitraums Clientdaten empfangen und der Offset des Masterknotens hat sich geändert. An jeden Slave werden nur Änderungen gesendet. Dieser Sendevorgang wird als Heartbeat-Mechanismus bezeichnet Es ist notwendig, Informationen auszutauschen und den Heartbeat-Mechanismus zur Wartung zu verwenden, um die Verbindung zwischen dem Master-Knoten und dem Slave-Knoten online zu halten.
Diese beiden Parameter geben an, dass nur noch 2 Slave-Knoten übrig sind, oder ab dem Knoten Wenn die Verzögerung länger als 8 Sekunden ist, schaltet der Masterknoten die Masterfunktion zwangsweise ab und stoppt die Datensynchronisierung. Woher kennt der Master-Knoten die Anzahl und Verzögerungszeit der ausgefallenen Slave-Knoten? Im Heartbeat-Mechanismus sendet der Slave jede Sekunde den Befehl perlconf ack. Dieser Befehl kann den Offset, die Verzögerungszeit des Slave-Knotens und die Anzahl der Slave-Knoten übertragen. 8. Drei Kernelemente der teilweisen Replikation Befehl ist zu sehen. Wir können dies auch sehen, wenn wir uns die Startprotokollinformationen oben ansehen. Der Copy-Puffer-Backlog ist eine First-In-First-Out-Warteschlange, in der der Benutzer Befehlsdatensätze des Masters speichert, um Daten zu sammeln. Der Standardspeicherplatz des Kopierpuffers beträgt 1 MB. Kann in der Konfigurationsdatei geändert werden 「复制缓冲区到底存储的是什么?」 当执行一个命令为
Wenn die Master-Slave-Replikation zum ersten Mal gestartet wird, sendet der Master seine Runid an den Slave und der Slave speichert die ID des Masters. Wir können sie mit dem Befehl „info“ anzeigen. Fügen Sie hier eine Bildbeschreibung ein Wenn die Verbindung wieder hergestellt wird, sendet der Slave diese ID an den Master. Wenn die vom Slave gespeicherte Runid mit der aktuellen Runid des Masters übereinstimmt, versucht der Master, eine teilweise Replikation zu verwenden (ein weiterer Faktor). ob dieser Block erfolgreich kopiert werden kann, ist der Offset). Wenn sich die vom Slave gespeicherte Runid von der aktuellen Runid des Masters unterscheidet, wird die vollständige Kopie direkt durchgeführt.
2. Copy-Backlog-Puffer
repl -backlog -size 1mb
um die Puffergröße zu steuern, je nach Ihrem eigenen Serverspeicher, den Kaka reserviert hat. repl-backlog-size 1mb
来控制缓冲区大小,这个比例可以根据自己的服务器内存来修改,咔咔这边是预留出了30%左右。set name kaka
「Was genau wird im Kopierpuffer gespeichert?」<h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);">
<span class="prefix" style="display: flex; width: 20px; height: 20px; background-size: 20px 20px; background-image: url(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; color: #40B8FA; font-size: 20px; margin-left: 25px;">3. Replikationsoffset (Offset) </span><span class="suffix" style="display: flex; box-sizing: border-box; width: 200px; height: 10px; border-top-left-radius: 20px; background: RGBA(64, 184, 250, .5); color: rgb(255, 255, 255); font-size: 16px; letter-spacing: 0.544px; justify-content: flex-end; float: right; margin-top: -10px; box-sizing: border-box !important; overflow-wrap: break-word !important;"></span>
</h2>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;"><img src="https://img-blog.csdnimg.cn/20200601165709395.png" alt="Redis Master-Slave-Replikationsprinzip und häufige Probleme" style="max-width:90%">Der Replikationsoffset des Masterknotens besteht darin, einen Datensatz einmal an den Slaveknoten zu senden, und der Slaveknoten soll einmal einen Datensatz empfangen. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;"> Wird verwendet, um Informationen zu synchronisieren, die Unterschiede zwischen dem Master-Knoten und dem Slave-Knoten zu vergleichen und die Datennutzung wiederherzustellen, wenn der Slave getrennt wird. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Dieser Wert ist der Offset vom Backlog-Bereich des Kopierpuffers. </p>
<h1 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 25px;">
<span class="prefix" style="color: rgb(64, 184, 250); display: none;"></span><span class="content" style="display: inline-block; color: rgb(64, 184, 250);">9. Häufige Probleme bei der Master-Slave-Replikation</span><span class="suffix" style="display: inline-block; color: rgb(64, 184, 250);"></span>
</h1>
<h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);">
<span class="prefix" style="display: flex; width: 20px; height: 20px; background-size: 20px 20px; background-image: url(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; color: #40B8FA; font-size: 20px; margin-left: 25px;">1. Problem beim Neustart des Master-Knotens (interne Optimierung) Dies führt dazu, dass alle Slave-Knoten vollständig repliziert werden. </span><span class="suffix" style="display: flex; box-sizing: border-box; width: 200px; height: 10px; border-top-left-radius: 20px; background: RGBA(64, 184, 250, .5); color: rgb(255, 255, 255); font-size: 16px; letter-spacing: 0.544px; justify-content: flex-end; float: right; margin-top: -10px; box-sizing: border-box !important; overflow-wrap: break-word !important;">Wir müssen über dieses Problem nicht nachdenken, wir müssen nur wissen, wie das System optimiert ist. </span>
</h2>Nachdem die Master-Slave-Replikation eingerichtet ist, erstellt der Masterknoten die Master-Replid-Variable. Die generierte Strategie ist die gleiche wie die Runid, die Länge beträgt 41 Bit und die Runid-Länge beträgt 40 Bit und wird dann an gesendet der Slave-Knoten. <p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;"></p>Wenn der Befehl zum Herunterfahren und Speichern auf dem Masterknoten ausgeführt wird, wird eine RDB-Persistenz durchgeführt und die Runid und der Offset werden in der RDB-Datei gespeichert. Sie können den Befehl redis-check-rdb verwenden, um diese Informationen anzuzeigen. <p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;"></p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Laden Sie die RDB-Datei nach dem Neustart des Masterknotens und laden Sie die Repl-ID und den Repl-Offset in der Datei in den Speicher. Auch wenn alle Slave-Knoten als die vorherigen Master-Knoten betrachtet werden. </p>
<h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);">
<span class="prefix" style="display: flex; width: 20px; height: 20px; background-size: 20px 20px; background-image: url(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; color: #40B8FA; font-size: 20px; margin-left: 25px;">2. Das Slave-Knotennetzwerk ist unterbrochen und der Offset überschreitet die Grenze, was zu einer vollständigen Replikation führt</span><span class="suffix" style="display: flex; box-sizing: border-box; width: 200px; height: 10px; border-top-left-radius: 20px; background: RGBA(64, 184, 250, .5); color: rgb(255, 255, 255); font-size: 16px; letter-spacing: 0.544px; justify-content: flex-end; float: right; margin-top: -10px; box-sizing: border-box !important; overflow-wrap: break-word !important;"></span>
</h2>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Aufgrund einer schlechten Netzwerkumgebung ist das Slave-Knotennetzwerk unterbrochen. Der Replikations-Backlog-Pufferspeicher ist zu klein, was zu einem Datenüberlauf führt. Wenn der Slave-Knoten-Offset die Grenze überschreitet, erfolgt eine vollständige Replikation. Dadurch kann es zu wiederholten Vollkopien kommen. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Lösung: Ändern Sie die Größe des Replikations-Backlog-Puffers: repl-backlog-size</p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Einstellungsvorschläge: Testen Sie die Zeit, die der Master-Knoten benötigt, um eine Verbindung zum Slave-Knoten herzustellen, und ermitteln Sie die durchschnittliche Gesamtzahl der vom Master-Knoten generierten Befehle pro Sekunde write_size_per_second</p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Replikationspufferplatz Einstellung = 2 * Master-Slave-Verbindungszeit * Die Gesamtmenge der vom Masterknoten pro Sekunde generierten Daten </p>
<h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);">
<span class="prefix" style="display: flex; width: 20px; height: 20px; background-size: 20px 20px; background-image: url(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; color: #40B8FA; font-size: 20px; margin-left: 25px;">3. Häufige Netzwerkunterbrechungen </span><span class="suffix" style="display: flex; box-sizing: border-box; width: 200px; height: 10px; border-top-left-radius: 20px; background: RGBA(64, 184, 250, .5); color: rgb(255, 255, 255); font-size: 16px; letter-spacing: 0.544px; justify-content: flex-end; float: right; margin-top: -10px; box-sizing: border-box !important; overflow-wrap: break-word !important;"></span>
</h2>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;"> aufgrund der hohen CPU Nutzung des Master-Knotens oder häufige Verbindungen vom Slave-Knoten. Das Ergebnis dieser Situation ist, dass verschiedene Ressourcen des Masterknotens stark belegt sind, einschließlich, aber nicht beschränkt auf Puffer, Bandbreite, Verbindungen usw. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Warum sind die Ressourcen des Masterknotens stark belegt? </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Im Heartbeat-Mechanismus sendet der Slave-Knoten jede Sekunde einen Befehl replconf ack an den Master-Knoten.
Auf dem Slave-Knoten wurde eine langsame Abfrage ausgeführt, die viel CPU beansprucht.
Der Master-Knoten ruft jede Sekunde die Replikations-Timing-Funktion replicationCron auf, und der Slave-Knoten antwortet dann lange Zeit nicht. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Lösung: </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Slave-Knoten-Timeout-Freigabe festlegen </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Parameter einstellen: repl-timeout</p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Dieser Parameter ist standardmäßig auf 60 Sekunden eingestellt. Lassen Sie den Slave nach 60 Sekunden los. </p>
<h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);">
<span class="prefix" style="display: flex; width: 20px; height: 20px; background-size: 20px 20px; background-image: url(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; color: #40B8FA; font-size: 20px; margin-left: 25px;">4. Dateninkonsistenzproblem</span><span class="suffix" style="display: flex; box-sizing: border-box; width: 200px; height: 10px; border-top-left-radius: 20px; background: RGBA(64, 184, 250, .5); color: rgb(255, 255, 255); font-size: 16px; letter-spacing: 0.544px; justify-content: flex-end; float: right; margin-top: -10px; box-sizing: border-box !important; overflow-wrap: break-word !important;"></span>
</h2>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Aufgrund von Netzwerkfaktoren sind die Daten mehrerer Slave-Knoten inkonsistent. Es gibt keine Möglichkeit, diesen Faktor zu vermeiden. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Für dieses Problem gibt es zwei Lösungen: </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Die ersten Daten müssen hochkonsistent sein und einen Redis-Server konfigurieren und einen Server sowohl zum Lesen als auch zum Schreiben verwenden. Diese Methode ist auf eine kleine Datenmenge beschränkt muss sehr konsistent sein. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Der zweite überwacht den Offset des Master-Slave-Knotens. Wenn die Verzögerung des Slave-Knotens zu groß ist, wird der Zugriff des Clients auf den Slave-Knoten vorübergehend blockiert. Setzen Sie den Parameter auf „slave-serve-stale-data ja|nein“. Sobald dieser Parameter gesetzt ist, kann er nur auf einige wenige Befehle reagieren, wie z. B. „Info Slaveof“. </p>
<h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);">
<span class="prefix" style="display: flex; width: 20px; height: 20px; background-size: 20px 20px; background-image: url(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; color: #40B8FA; font-size: 20px; margin-left: 25px;">5. Slave-Knotenfehler</span><span class="suffix" style="display: flex; box-sizing: border-box; width: 200px; height: 10px; border-top-left-radius: 20px; background: RGBA(64, 184, 250, .5); color: rgb(255, 255, 255); font-size: 16px; letter-spacing: 0.544px; justify-content: flex-end; float: right; margin-top: -10px; box-sizing: border-box !important; overflow-wrap: break-word !important;"></span>
</h2>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Dieses Problem verwaltet direkt eine Liste der verfügbaren Knoten auf dem Client. Dieses Problem wird später im Cluster besprochen . </p>
<h1 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 25px;">
<span class="prefix" style="color: rgb(64, 184, 250); display: none;"></span><span class="content" style="display: inline-block; color: rgb(64, 184, 250);"> 10. Zusammenfassung</span><span class="suffix" style="display: inline-block; color: rgb(64, 184, 250);"></span>
</h1>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Dieser Artikel erklärt hauptsächlich, was Master-Slave-Replikation ist, die drei Hauptphasen der Master-Slave-Replikationsarbeit und die drei Kerne des Workflows und der Teilreplikation. Heartbeat-Mechanismus während der Befehlsweitergabephase. Abschließend werden häufige Probleme bei der Master-Slave-Replikation erläutert. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Das Schreiben dieses Artikels hat zwei Tage gedauert. Dies ist auch der längste Artikel, den Kaka in Zukunft veröffentlicht hat. Ich werde nicht mehrere Artikel veröffentlichen, um ein einzelnes Problem zu erklären . Ich werde alles in einem Artikel beenden. Unvollständige oder falsche Wissenspunkte werden verbessert, wenn Kakas Wissenspunkte zunehmen. Der Artikel dient hauptsächlich der Bequemlichkeit der Kaka-Rezension. Wenn Sie Fragen haben, schauen Sie sich den Kommentarbereich an. </p>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">Kaka hofft, dass alle gemeinsam kommunizieren und lernen können. Wenn etwas nicht stimmt, können Sie es nicht kritisieren. </p>
<blockquote data-tool="mdnice编辑器" style="font-size: 0.9em; overflow: auto; padding-top: 10px; padding-bottom: 10px; padding-right: 10px; margin-bottom: 20px; margin-top: 20px; text-size-adjust: 100%; line-height: 1.55em; border-radius: 6px; color: rgb(89, 89, 89); box-sizing: inherit; border-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-color: rgba(64, 184, 250, 0.4); border-image: initial; background: rgba(64, 184, 250, 0.1);">
<span style="color: RGBA(64, 184, 250, .5); font-size: 34px; line-height: 1; font-weight: 700;">❝</span><p style="padding-top: 8px; padding-bottom: 8px; font-size: 14px; word-spacing: 2px; margin-top: 0px; margin-bottom: 0px; line-height: 26px;">Beharrlichkeit beim Lernen, Beharrlichkeit beim Bloggen und Beharrlichkeit beim Teilen sind die Überzeugungen, die Kaka seit seiner Karriere immer vertreten hat. Ich hoffe, dass Kakas Artikel im riesigen Internet Ihnen ein wenig helfen können die nächste Ausgabe. </p>
<span style="float: right; color: RGBA(64, 184, 250, .5);">❞</span> </blockquote>
Empfohlen: „Redis-Tutorial“
Das obige ist der detaillierte Inhalt vonRedis Master-Slave-Replikationsprinzip und häufige Probleme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!