Wie lautet der vollständige Name von Redis RDB? Redis RDB-Speicherdatenpersistenz-Betriebsmodus

Der vollständige Name von RDB lautetRedis database.

  • Wie der Name schon sagt, ist RDB eine Redis-Datenbank zum Speichern von Daten.
  • Daher werden durch RDB-Persistenz die im Redis-Speicher gespeicherten Daten in die RDB-Datei geschrieben und auf der Festplatte gespeichert, um Persistenz zu erreichen.
  • Das Merkmal von Redis ist, dass es Daten persistieren kann, d. h. Daten im Speicher auf die Festplatte schreiben kann, um sicherzustellen, dass keine Daten verloren gehen, und auch Daten von der Festplatte in den Speicher laden kann.

Wie lautet der vollständige Name von Redis RDB? Redis RDB-Speicherdatenpersistenz-Betriebsmodus

Die Operationen von Redis zu Beginn basieren alle auf Speicher, daher ist die Leistung sehr hoch, aber sobald das Programm geschlossen wird, gehen die Daten verloren.

Daher müssen wir In-Memory-Daten in bestimmten Intervallen auf die Festplatte schreiben, was im Fachjargon Snapshot heißt.

Beim Wiederherstellen wird die Snapshot-Datei direkt in den Speicher geschrieben.

Dies ist auch einer der Hauptunterschiede zwischen Redis und Memcached, da Memcached keine Persistenzfähigkeit hat.

Für die Persistenz von Redis-Speicherdaten stellt uns Redis die folgenden Methoden zur Verfügung:

  • Snapshot-Methode (RDB, Redis DataBase): Speicherdaten zu einem bestimmten Zeitpunkt in binärer Form auf die Festplatte schreiben;
  • Append Only File (AOF, Append Only File), Aufzeichnung aller Operationsbefehle und Anhängen an die Datei in Textform;
  • Hybride Persistenz, eine neue Methode nach Redis 4.0, hybride Persistenz kombiniert die Vorteile von RDB und AOF.Schreiben Sie beim Schreiben zuerst die aktuellen Daten in Form von RDB an den Anfang der Datei und speichern Sie dann die nachfolgenden Operationsbefehle in Form von AOF in der Datei, wodurch die Geschwindigkeit des Redis-Neustarts nicht nur sichergestellt, sondern auch verringert werden kann das Risiko von Datenverlust .

Weil jedes Persistenzschema spezifische Nutzungsszenarien hat.

Redis RDB-Speicherdatenpersistenz-Betriebsmodus

  • RDB (Redis DataBase) ist der Prozess, einen Speicherabzug (Snapshot) zu einem bestimmten Zeitpunkt in binärer Form auf die Festplatte zu schreiben.
  • Erinnerungsschnappschüsse sind das, was wir oben gesagt haben.Es bezieht sich auf die Zustandsaufzeichnung von Daten im Speicher zu einem bestimmten Zeitpunkt.
  • Dies ähnelt dem Aufnehmen eines Fotos: Wenn Sie ein Foto von einem Freund aufnehmen, kann ein Foto sofort alle Bilder des Freundes aufnehmen.
  • Es gibt zwei Möglichkeiten, RDB auszulösen: die eine ist die manuelle Auslösung und die andere die automatische Auslösung.

Lösen Sie den RDB manuell aus

Es gibt zwei Operationen, um Persistenz manuell auszulösen:savebgsave.

Der Hauptunterschied zwischen ihnen besteht darin, ob die Ausführung des Redis-Hauptthreads blockiert werden soll oder nicht.

1. Speicherbefehl

Das Ausführen des save-Befehls auf der Client-Seite löst die Persistenz von Redis aus, versetzt Redis aber auch in einen blockierenden Zustand.Es reagiert nicht auf Befehle, die von anderen Clients gesendet werden, bis die RDB persistent ist, daher muss es mit Vorsicht verwendet werden die Produktionsumgebung.

127.0.0.1:6379> save
OK
127.0.0.1:6379>

Der Prozess der Ausführung des Befehls ist in der Abbildung dargestellt 

2. bgsave-Befehl

  • bgsave (Hintergrundspeicherung) ist eine Hintergrundspeicherung.
  • Der größte Unterschied zwischen ihm und dem save-Befehl besteht darin, dass bgsave einen untergeordneten Prozess forkt, um die Persistenz auszuführen.
  • Der gesamte Prozess findet nur statt, wenn der untergeordnete Prozess gegabelt wird.Es gibt nur eine kurze Blockade.
  • Nachdem der untergeordnete Prozess erstellt wurde, kann der Hauptprozess von Redis auf Anfragen von anderen Clients reagieren.

mit Blockierung des gesamten Prozessessaveim Vergleich zum BefehlbgsaveCommand ist offensichtlich besser für uns geeignet.

127.0.0.1:6379> bgsave
Background Saving started # 提示开始后台保存 
127.0.0.1:6379>

RDB automatisch auslösen

Nachdem wir über das manuelle Triggern gesprochen haben, schauen wir uns das automatische Triggern an.Wir können die Bedingungen für die automatische Auslösung in der Konfigurationsdatei konfigurieren.

1. speichere mn

  • save mn bedeutet, dass innerhalb von m Sekunden, wenn sich n Tasten ändern, Persistenz automatisch ausgelöst wird.Die Parameter m und n finden Sie in der Redis-Konfigurationsdatei.
  • Save 60 1 bedeutet beispielsweise, dass innerhalb von 60 Sekunden, solange sich eine Taste ändert, RDB-Persistenz ausgelöst wird.
  • Die Essenz des automatischen Auslösens der Persistenz besteht darin, dass Redis den bgsave-Befehl automatisch einmal ausführt, wenn die festgelegten Auslösebedingungen erfüllt sind.

Hinweis: Wenn mehrere save mn-Befehle festgelegt sind, löst eine beliebige Bedingung Persistenz aus.

Zum Beispiel setzen wir die folgenden zwei save mn-Befehle:

save 60 10
save 600 20
  • Wenn sich der Redis-Schlüsselwert 60 Mal innerhalb von 10 Sekunden ändert, wird Persistenz ausgelöst;
  • Wenn sich der Redis-Schlüssel innerhalb von 60 Sekunden ändert und wenn sich der Wert weniger als 10 Mal ändert, bestimmt Redis, ob der Redis-Schlüssel innerhalb von 600 Sekunden mindestens 20 Mal geändert wurde, und löst in diesem Fall eine Persistenz aus.

2. Spülkasten

  • Der Befehl flushall wird verwendet, um die Redis-Datenbank zu leeren.
  • Es muss in einer Produktionsumgebung mit Vorsicht verwendet werden.
  • Wenn Redis den Befehl flushall ausführt, löst es die automatische Persistenz aus und löscht die RDB-Dateien.

3. Master-Slave-Synchronisationstrigger

Wenn bei der Redis-Master-Slave-Replikation der Slave-Knoten eine vollständige Replikationsoperation durchführt, führt der Master-Knoten den bgsave-Befehl aus, um die RDB-Datei an den Slave-Knoten zu senden. Dieser Prozess löst automatisch die Redis-Persistenz aus.

Redis kann die aktuellen Konfigurationsparameter über Befehle abfragen.

Das Format des Abfragebefehls ist:config get xxx

Wenn Sie beispielsweise die Speichernameneinstellung einer RDB-Datei abrufen möchten, können Sie verwenden config get dbfilename .

Der Ausführungseffekt ist wie folgt:

127.0.0.1:6379> config get dbfilename
1) "dbfilename"
2) "dump.rdb"

Da der Redis-Server beim Laden der RDB-Datei blockiert, bis der Ladevorgang abgeschlossen ist, kann es zu einer langen Zeit kommen und die Website kann nicht aufgerufen werden.

Wenn Sie die RDB-Cache-Datei dump.rdb von Redis manuell löschen möchten, können Sie mit dem folgenden Befehl den Speicherpfad der Datei dump.rdb ermitteln▼

find / -name dump.rdb
  • Löschen Sie dann die Cache-Datei dump.rdb manuell über SSH.

Redis legt die Konfiguration von RDB fest

Bezüglich der Einstellung der Konfiguration von RDB können Sie die folgenden zwei Möglichkeiten verwenden:

  1. Ändern Sie die Redis-Konfigurationsdatei manuell
  2. Verwenden Sie die Befehlszeileneinstellungen, config set dir "/usr/data" ist der Speicherbefehl zum Ändern der RDB-Datei

Hinweis: Die Konfiguration in redis.conf kann über config get xxx abgerufen und über config set xxx value geändert werden, und die Methode der manuellen Änderung der Redis-Konfigurationsdatei ist global wirksam, d. h. die durch einen Neustart des Redis-Servers festgelegten Parameter werden dies nicht tun verloren gehen, aber mit dem Befehl geändert werden, geht es nach dem Neustart von Redis verloren.

Wenn Sie jedoch die Redis-Konfigurationsdatei manuell ändern möchten, damit sie sofort wirksam wird, müssen Sie den Redis-Server neu starten, und die Befehlsmethode erfordert keinen Neustart des Redis-Servers.

Wiederherstellung von RDB-Dateien

Wenn der Redis-Server startet und die RDB-Datei dump.rdb im Redis-Stammverzeichnis vorhanden ist, lädt Redis automatisch die RDB-Datei, um persistente Daten wiederherzustellen.

Wenn es keine dump.rdb-Datei im Root-Verzeichnis gibt, verschieben Sie die dump.rdb-Datei bitte zuerst in das Root-Verzeichnis von Redis.

Natürlich gibt es beim Start von Redis Log-Informationen, die zeigen, ob die RDB-Datei geladen ist.

Der Redis-Server blockiert beim Laden der RDB-Datei, bis der Ladevorgang abgeschlossen ist.

Jetzt wissen wir, dass die RDB-Persistenz in zwei Arten unterteilt ist: manuelles Auslösen und automatisches Auslösen:

  1. Sein Vorteil ist, dass die Speicherdatei klein ist und die Datenwiederherstellung beim Start von Redis schneller ist.
  2. Der Nachteil ist, dass die Gefahr von Datenverlust besteht.

Die Wiederherstellung von RDB-Dateien ist ebenfalls sehr einfach: Legen Sie die RDB-Dateien einfach in das Stammverzeichnis von Redis, und Redis lädt und stellt die Daten beim Start automatisch wieder her.

RDB Vor- und Nachteile

1) RDB-Vorteile

Der Inhalt von RDB sind Binärdaten, die weniger Speicher belegen, kompakter sind und besser als Sicherungsdatei geeignet sind;

RDB ist sehr nützlich für die Notfallwiederherstellung, es ist eine komprimierte Datei, die für die Wiederherstellung des Redis-Dienstes schneller auf einen Remote-Server übertragen werden kann;

RDB kann die Geschwindigkeit von Redis erheblich verbessern, da der Redis-Hauptprozess einen untergeordneten Prozess forkt, um Daten auf der Festplatte zu speichern.

Der Redis-Hauptprozess führt keine Vorgänge wie Festplatten-E/A durch;

Verglichen mit Dateien im AOF-Format starten RDB-Dateien schneller neu.

2) Nachteile von RDB

Da RDB Daten nur in einem bestimmten Zeitintervall speichern kann, gehen die Redis-Daten für eine gewisse Zeit verloren, wenn der Redis-Dienst versehentlich mittendrin beendet wird;

Ein Prozess, bei dem RDB häufig Forks erfordert, um es mithilfe von Untereinträgen auf der Festplatte zu speichern.

Wenn das Dataset groß ist, kann Fork zeitaufwändig sein, und wenn das Dataset groß ist, ist die CPU-Leistung schlecht, was dazu führen kann, dass Redis Clients für einige Millisekunden oder sogar eine Sekunde nicht bedienen kann.

Natürlich können wir die Persistenz auch deaktivieren, um die Ausführungseffizienz von Redis zu verbessern.

Wenn Sie nicht empfindlich auf Datenverlust reagieren, können Sie dies tun, wenn der Client eine Verbindung herstellt config set save "" Befehl zum Deaktivieren der Persistenz für Redis.

redis.conf, wenn drinsaveKommentieren Sie am Anfang alle Konfigurationen aus, wird die Persistenz ebenfalls deaktiviert, aber dies wird im Allgemeinen nicht getan.

Hoffnung Chen Weiliang Blog ( https://www.chenweiliang.com/ ) geteilt "Wie lautet der vollständige Name von Redis RDB? Redis RDB In-Memory Data Persistence Operation Mode, der Ihnen helfen wird.

Willkommen, um den Link dieses Artikels zu teilen:https://www.chenweiliang.com/cwl-26677.html

Willkommen im Telegrammkanal von Chen Weiliangs Blog, um die neuesten Updates zu erhalten!

🔔 Seien Sie der Erste, der den wertvollen „ChatGPT Content Marketing AI Tool Usage Guide“ im Kanal-Top-Verzeichnis erhält! 🌟
📚 Dieser Leitfaden enthält einen enormen Mehrwert. 🌟Dies ist eine seltene Gelegenheit, verpassen Sie sie nicht! ⏰⌛💨
Teilen und liken, wenn es euch gefällt!
Ihr Teilen und Ihre Likes sind unsere ständige Motivation!

 

发表 评论

Deine Email-Adresse wird nicht veröffentlicht. 必填 项 已 已 * 标注

nach oben scrollen