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.
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.
Redis-Persistenz ist auch einer der Hauptunterschiede zwischen Redis und Memcached, da Memcached keine Persistenzfunktion hat.
Redis-Persistenz verfügt über die folgenden drei Methoden:
Da jede Persistenzlösung spezifische Nutzungsszenarien hat, beginnen wir mit der RDB-Persistenz.
RDB (Redis DataBase) ist der Prozess des Schreibens eines Speicher-Snapshots (Snapshot) zu einem bestimmten Zeitpunkt in binärer Form auf die Festplatte.
Es gibt zwei Arten von Persistenzauslösungsmethoden für RDB: eine ist die manuelle Auslösung und die andere ist die automatische Auslösung.
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 .
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:
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:
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:
bgsave
Der Ausführungsprozess ist wie in der Abbildung unten dargestellt:
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.
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:
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
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:
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.
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:
② 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
. 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
verwenden. Der Ausführungseffekt ist wie in der folgenden Abbildung dargestellt: config get dir
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.
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:
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.
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.
11. Fragen, über die Sie nachdenken sollten
12. Referenzen und Danksagungen
https://redis.io/topics/persistencehttps://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!