Heim  >  Artikel  >  Datenbank  >  Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

青灯夜游
青灯夜游nach vorne
2020-03-31 10:23:252764Durchsuche

Dieser Artikel stellt Ihnen die Snapshot-Methode (RDB) in der Redis-Persistenz vor. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

Redis liest und schreibt im Speicher, daher ist die Leistung hoch, aber die Daten im Speicher gehen beim Neustart des Servers verloren, um sicherzustellen, dass die Daten nicht verloren gehen. Wir müssen die Daten im Speicher auf der Festplatte speichern, damit die Originaldaten beim Neustart von Redis von der Festplatte wiederhergestellt werden können. Der gesamte Vorgang wird als Redis-Persistenz bezeichnet.

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz
Redis-Persistenz ist auch einer der Hauptunterschiede zwischen Redis und Memcached, da Memcached keine Persistenzfunktion hat.

1. Mehrere Persistenzmethoden

Redis-Persistenz verfügt über die folgenden drei Methoden:

  • Snapshot-Methode (RDB, Redis DataBase) schreibt die Speicherdaten zu einem bestimmten Zeitpunkt in binärer Form auf die Festplatte übertragen;
  • Dateianhängemethode (AOF, Append Only File) zeichnet alle Betriebsbefehle auf und schreibt sie als Text. An die Datei anhängen Formular;
  • Hybrid-Persistenzmethode, eine neue Methode nach Redis 4.0. Beim Schreiben werden zunächst die aktuellen Daten an den Anfang geschrieben in Form von RDB und speichern Sie dann die nachfolgenden Betriebsbefehle in der Datei im AOF-Format. Dies kann nicht nur die Geschwindigkeit des Redis-Neustarts sicherstellen, sondern auch das Risiko eines Datenverlusts verringern.

Da jede Persistenzlösung spezifische Nutzungsszenarien hat, beginnen wir mit der RDB-Persistenz.

2. Einführung in RDB

RDB (Redis DataBase) ist der Prozess des Schreibens eines Speicher-Snapshots (Snapshot) zu einem bestimmten Zeitpunkt in binärer Form auf die Festplatte.

3. Persistenzauslösung

Es gibt zwei Arten von Persistenzauslösungsmethoden für RDB: eine ist die manuelle Auslösung und die andere ist die automatische Auslösung.

1) Manuelles Auslösen

Es gibt zwei Vorgänge zum manuellen Auslösen der Persistenz: save und bgsave Ihr Hauptunterschied besteht darin, ob die Ausführung des Redis-Hauptthreads blockiert werden soll .

① Befehl speichern

Das Ausführen des Befehls save im Client löst die Persistenz von Redis aus, versetzt Redis jedoch auch in einen blockierenden Zustand, bis die RDB-Persistenz abgeschlossen ist Befehle, die von anderen Clients gesendet werden, daher muss in einer Produktionsumgebung mit Vorsicht verwendet werden. Der Befehl

save wird wie folgt verwendet:

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

Wie aus dem Bild ersichtlich ist, wird nach Ausführung des Befehls save die Persistenz erhöht Datei dump.rdb Die Änderungszeit ändert sich, was bedeutet, dass save die RDB-Persistenz erfolgreich ausgelöst hat.

save Der Befehlsausführungsprozess ist wie in der folgenden Abbildung dargestellt:

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

② bgsave-Befehl

bgsave (Hintergrundspeicherung) ist ein Hintergrundspeichermittel. Der größte Unterschied zwischen ihm und dem Befehl save besteht darin, dass bgsave einen untergeordneten Prozess forkt (), um eine Persistenz durchzuführen. Im gesamten Prozess gibt es nur eine kurze Blockierung, wenn fork () den untergeordneten Prozess durchführt Nachdem der untergeordnete Prozess erstellt wurde, kann der Hauptprozess von Redis auf Anfragen anderer Clients reagieren. Im Vergleich zum Befehl save, der den gesamten Prozess blockiert, ist der Befehl bgsave für uns offensichtlich besser geeignet. Der Befehl
bgsave wird wie in der Abbildung unten gezeigt verwendet:

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

bgsave Der Ausführungsprozess ist wie in der Abbildung unten dargestellt:

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

2) Automatische Auslösung

Nachdem wir über die manuelle Auslösemethode von RDB gesprochen haben, schauen wir uns an, wie man die RDB-Persistenz automatisch auslöst.
Die automatische RDB-Persistenz tritt hauptsächlich in den folgenden Situationen auf.

① m n speichern

save m n bedeutet, dass die Persistenz automatisch ausgelöst wird, wenn sich n Tasten innerhalb von m Sekunden ändern.
Die Parameter m und n finden Sie in der Redis-Konfigurationsdatei. save 60 1 gibt beispielsweise an, dass die RDB-Persistenz ausgelöst wird, wenn sich mindestens ein Schlüssel innerhalb von 60 Sekunden ändert.
Löst automatisch die Persistenz aus. Das Wesentliche ist, dass Redis den Befehl bgsave automatisch einmal ausführt, wenn die festgelegten Triggerbedingungen erfüllt sind.
Hinweis: Beim Festlegen mehrerer save m n-Befehle wird die Persistenz ausgelöst, wenn eine Bedingung erfüllt ist.
Zum Beispiel richten wir die folgenden zwei save m n-Befehle ein:

  • 60 10 sparen
  • 600 1 sparen

Wenn sich der Redis-Schlüsselwert innerhalb von 60 Sekunden 10 Mal ändert, wird die Persistenz ausgelöst; wenn sich der Redis-Schlüsselwert innerhalb von 60 Sekunden ändert Wenn sich der Schlüsselwert weniger als zehnmal geändert hat, ermittelt Redis, ob der Schlüsselwert von Redis innerhalb von 600 Sekunden mindestens einmal geändert wurde. Wenn ja, wird die Persistenz ausgelöst. Der Befehl

②lushall

flushall wird zum Löschen der Redis-Datenbank verwendet. Er muss in einer Produktionsumgebung mit Vorsicht verwendet werden. Wenn Redis den Befehl flushall ausführt, erfolgt die automatische Persistenz RDB-Dateien werden gelöscht.
Das Ausführungsergebnis ist in der folgenden Abbildung dargestellt:

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

③ Master-Slave-Synchronisierung wird ausgelöst

Bei der Redis-Master-Slave-Replikation, wenn der Slave Der Knoten führt einen vollständigen Replikationsvorgang aus. Der Master-Knoten führt den Befehl bgsave aus und sendet die RDB-Datei an den Slave-Knoten. Dieser Vorgang löst automatisch die Redis-Persistenz aus.

4. Konfigurationsanweisungen

Die richtige Einstellung der RDB-Konfiguration kann den effizienten und stabilen Betrieb von Redis sicherstellen.

RDB-Konfigurationsparameter finden Sie in der Redis-Konfigurationsdatei. Die spezifischen Inhalte lauten wie folgt:

# RDB 保存的条件
save 900 1
save 300 10
save 60 10000

# bgsave 失败之后,是否停止持久化数据到磁盘,yes 表示停止持久化,no 表示忽略错误继续写文件。
stop-writes-on-bgsave-error yes

# RDB 文件压缩
rdbcompression yes

# 写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。
rdbchecksum yes

# RDB 文件名
dbfilename dump.rdb

# RDB 文件目录
dir ./

Die wichtigeren Parameter sind wie folgt folgt:
① Speicherparameter
Wird zum Konfigurieren von Parametern verwendet, die RDB-Persistenzbedingungen auslösen. Wenn die Speicherbedingungen erfüllt sind, werden die Daten auf der Festplatte gespeichert.
Die Standardkonfigurationsbeschreibung lautet wie folgt:

  • save 900 1: Gibt an, dass die Daten auf der Festplatte gespeichert werden, wenn sich mindestens 1 Schlüsselwert innerhalb von 900 Sekunden ändert;
  • save 300 10: Gibt an, dass die Daten auf der Festplatte gespeichert werden, wenn sich mindestens 10 Schlüsselwerte innerhalb von 300 Sekunden ändern;
  • save 60 10000: Gibt an, dass mindestens 10.000 Schlüsselwerte vorhanden sind ​​Änderung innerhalb von 60 Sekunden, werden die Daten auf der Festplatte gespeichert.

② rdbcompression-Parameter Der Standardwert ist
, was bedeutet, dass Redis beim Einschalten der RDB-Dateikomprimierung den LZF-Algorithmus zur Komprimierung verwendet. Wenn Sie keine CPU-Leistung für die Dateikomprimierung verbrauchen möchten, können Sie diese Funktion deaktivieren. Der Nachteil besteht darin, dass zum Speichern von Dateien mehr Speicherplatz benötigt wird. yes
③ rdbchecksum-Parameter Der Standardwert ist
, der angibt, ob die RDB-Dateiprüfung beim Schreiben und Lesen von Dateien aktiviert werden soll und ob beim Start ein Schaden festgestellt wird , Bei Beschädigung den Start stoppen. yes

5. Konfigurationsabfrage

Sie können Befehle in Redis verwenden, um die aktuellen Konfigurationsparameter abzufragen. Das Format des Abfragebefehls lautet:

. Wenn Sie beispielsweise die Speichernameneinstellung der RDB-Datei erhalten möchten, können Sie config get xxx verwenden. Der Ausführungseffekt ist wie folgt: config get dbfilename

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

Um das Dateiverzeichnis von RDB abzufragen, können Sie den Befehl

verwenden. Der Ausführungseffekt ist wie in der folgenden Abbildung dargestellt: config get dir

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

6. Konfigurationseinstellungen

Legen Sie die RDB-Konfiguration auf die folgenden zwei Arten fest:

    Ändern Sie die Redis-Konfigurationsdatei manuell;
  • Verwenden Sie beispielsweise die Befehlszeileneinstellungen
  • Um das RDB-Speicherverzeichnis zu ändern. config set dir "/usr/data"

Hinweis: Das manuelle Ändern der Redis-Konfigurationsdatei ist global wirksam, d es wird verloren gehen. Wenn Sie jedoch die Redis-Konfigurationsdatei manuell ändern möchten, damit sie sofort wirksam wird, müssen Sie den Redis-Server neu starten, die Befehlsmethode erfordert jedoch keinen Neustart des Redis-Servers.

Tipps: Die Redis-Konfigurationsdatei befindet sich im Stammpfad des Redis-Installationsverzeichnisses und der Standardname lautet redis.conf.

7.RDB-Dateiwiederherstellung

Wenn der Redis-Server startet und die RDB-Datei dump.rdb im Redis-Stammverzeichnis vorhanden ist, lädt Redis automatisch die RDB-Datei, um die persistenten Daten wiederherzustellen.
Wenn sich im Stammverzeichnis keine Datei „dump.rdb“ befindet, verschieben Sie die Datei „dump.rdb“ bitte zuerst in das Stammverzeichnis von Redis.
Überprüfen Sie, ob die RDB-Datei geladen ist
Redis verfügt beim Start über Protokollinformationen, die zeigen, ob die RDB-Datei geladen ist. Wir führen den Redis-Startbefehl aus: src/redis-server redis.conf, wie gezeigt in der Abbildung unten:

Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz

Wie aus dem Protokoll ersichtlich ist, hat der Redis-Dienst die RDB-Datei beim Start normal geladen.

Tipps: Während der Redis-Server die RDB-Datei lädt, wird sie blockiert, bis die Ladearbeiten abgeschlossen sind.

8. RDB-Vorteile und -Nachteile

1) RDB-Vorteile

  • RDB-Inhalte sind Binärdaten, beanspruchen weniger Speicher, sind kompakter und besser geeignet als Sicherungsdatei;
  • RDB ist sehr nützlich für die Notfallwiederherstellung. Es handelt sich um eine kompakte Datei, die für die Wiederherstellung des Redis-Dienstes schneller übertragen werden kann Umfang Die Laufgeschwindigkeit liegt daran, dass der Redis-Hauptprozess jedes Mal einen untergeordneten Prozess forkt (), um die Daten auf der Festplatte beizubehalten. Der Redis-Hauptprozess führt keine Vorgänge wie Festplatten-E/A aus > und AOF RDB-Dateien können schneller neu gestartet werden als Dateien im Format.
  • 2) Nachteile von RDB
Da RDB Daten nur für ein bestimmtes Zeitintervall speichern kann, werden die Daten für einen bestimmten Zeitraum gespeichert, wenn der Redis-Dienst versehentlich auf halbem Weg beendet wird Es geht Zeit verloren.

RDB erfordert häufiges fork(), um sie mithilfe untergeordneter Prozesse auf der Festplatte zu speichern. Fork() kann zeitaufwändig sein, wenn der Datensatz groß ist, und kann dazu führen, dass Redis die Clients für einige Millisekunden oder sogar eine Sekunde nicht mehr bedient, wenn der Datensatz groß und die CPU-Leistung schlecht ist.
  • 9. Das Deaktivieren der Persistenz kann die Ausführungseffizienz von Redis verbessern. Wenn Sie nicht empfindlich auf Datenverlust reagieren, können Sie es ausführen, während Sie eine Verbindung zum Client herstellen.
  • Der Befehl kann die Persistenz von Redis deaktivieren, wie in der folgenden Abbildung gezeigt:

10. Zusammenfassung

config set save ""Durch diesen Artikel können wir erfahren, dass die RDB-Persistenz in manuelle Unterteilungen unterteilt ist Es gibt zwei Methoden: Auslösen und automatisches Auslösen. Der Vorteil besteht darin, dass die Speicherdatei klein ist und die Datenwiederherstellung beim Start von Redis schneller erfolgt. Der Nachteil besteht darin, dass das Risiko eines Datenverlusts besteht. Das Wiederherstellen von RDB-Dateien ist ebenfalls sehr einfach. Sie müssen die RDB-Dateien nur im Stammverzeichnis von Redis ablegen, und die Daten werden beim Start von Redis automatisch geladen und wiederhergestellt.
Erfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz11. Fragen, über die Sie nachdenken sollten

Wenn die CPU-Auslastung des Redis-Servers zu hoch ist, was kann die Ursache sein? Gerne können Sie Ihre Antworten in den Kommentarbereich schreiben.

12. Referenzen und Danksagungen

https://redis.io/topics/persistence

https://blog.csdn.net/ qq_36318234/article/details/79994133

https://www.cnblogs.com/ysocean/p/9114268.html
https://www.cnblogs. com/wdliu/p/9377278.html
Dieser Artikel wurde reproduziert von: https://segmentfault.com/a/1190000021036574
Für weitere Redis-Kenntnisse achten Sie bitte auf Erste Schritte mit Redis Tutorial Spalte.

Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über die Snapshot-Methode (RDB) in der Redis-Persistenz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen