Dieser Artikel wird Ihnen helfen, den Persistenzmechanismus in Redis: RDB und AOF zu verstehen und RDB und AOF zu vergleichen. Ich hoffe, er wird Ihnen hilfreich sein!
Warum Persistenz
Wenn erneut auf Redis zugegriffen wird und festgestellt wird, dass die Redis-Daten leer sind, kommt es zu einer Cache-Penetration. Noch wichtiger ist, dass es aufgrund der leeren Redis-Daten keine Schlüssel gibt, auf die der Client zugreifen möchte, was dazu führt, dass eine große Anzahl von Anforderungen sofort die Datenbank erreicht und eine Cache-Lawine auslöst (eine kleine Anzahl von Schlüsseln dringt ein, eine große Anzahl von Schlüsseln dringt ein). Anzahl der Der Schlüssel ist Avalanche).
Zu diesem Zeitpunkt kann die Datenbank hängen bleiben. Es gibt keine Garantie dafür, dass Redis nicht ausfällt. Wenn also Redis ausfällt, müssen die darin enthaltenen Inhalte schnell wiederhergestellt werden. Daher ist Beharrlichkeit gefragt. Persistenz dient der Wiederherstellung von Daten, nicht der Speicherung von Daten. [Verwandte Empfehlungen: Redis-Video-Tutorial]
RDB
RDB (Redis DataBase) ist die Standardspeichermethode von Redis. Die RDB-Methode wird durch Snapshotting abgeschlossen.
... ). save 300 10 # Zeigt an, dass ein Snapshot erstellt wird, wenn innerhalb von 5 Minuten (300 Sekunden) mindestens 10 Schlüssel geändert werden.
Save 60 10000 # zeigt an, dass bei mindestens 10000 Tasten innerhalb von 1 Minute schnell
den Befehl speichern oder bgSave
N秒内数据集至少有M个改动”这一条件被满足时,自动保存一次数据集。
save
bgsavesynchron | asynchron | |
---|---|---|
nein ( Wenn der untergeordnete Prozess ausgeführt wird, um die Fork-Funktion aufzurufen, kommt es zu einer kurzen Blockierung Blockiert keine Client-Befehle | Nachteile | |
Untergeordnete Prozesse müssen gegabelt werden und Speicher verbrauchen |
Führen Sie den Befehl „flushall“ aus. flushall Bevor Sie Redis löschen, speichern Sie den aktuellen Redis-Snapshot. Führen Sie den Master-Slave-Replikationsvorgang durch (erstmals). was gespeichert wird Aktueller Redis-Snapshot RDB-AusführungsprozessProzessanalyse
1. Der 5-Byte-Header ist auf die Zeichenfolge „REDIS“ festgelegt
RDB ist eine binär komprimierte Datei, die wenig Platz beansprucht und einfach zu übertragen ist (an Slave übergeben) Der Hauptprozess verzweigt den untergeordneten Prozess, um die Redis-Leistung zu maximieren . Der Hauptprozess wird während des Kopiervorgangs blockiert
AOF
Befehlsweitergabe: Redis sendet den ausgeführten Befehl, Befehlsparameter, Befehlsparameternummer und andere Informationen an das AOF-Programm. Cache-Anhängen: Das AOF-Programm konvertiert den Befehl basierend auf den empfangenen Befehlsdaten in das Format des Netzwerkkommunikationsprotokolls und hängt dann den Protokollinhalt an den AOF-Cache des Servers an.Schreiben und Speichern von Dateien: Der Inhalt im AOF-Cache wird an das Ende der AOF-Datei geschrieben. Wenn die festgelegten AOF-Speicherbedingungen erfüllt sind, wird die Funktion fsync oder fdatasync aufgerufen, um den geschriebenen Inhalt tatsächlich zu schreiben. Auf Datenträger speichern. BefehlsweitergabeWenn ein Redis-Client einen Befehl ausführen muss, sendet er den Protokolltext über die Netzwerkverbindung an den Redis-Server. Nachdem der Server die Anfrage des Clients empfangen hat, wählt er basierend auf dem Inhalt des Protokolltexts die entsprechende Befehlsfunktion aus und konvertiert jeden Parameter von einem Zeichenfolgentext in ein Redis-Zeichenfolgenobjekt (StringObject). Immer wenn die Befehlsfunktion erfolgreich ausgeführt wird, werden die Befehlsparameter an das AOF-Programm weitergegeben. Cache Append
|
Das obige ist der detaillierte Inhalt vonDetaillierte Analyse des Persistenzmechanismus in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!