Heim  >  Artikel  >  Datenbank  >  RDB für Redis-Datenpersistenz

RDB für Redis-Datenpersistenz

齐天大圣
齐天大圣Original
2020-05-22 08:12:431530Durchsuche

Im Gegensatz zu Memcache kann Redis Daten auf der Festplatte speichern. Redis bietet derzeit drei Persistenzmethoden: RDB, AOF und RDB-AOF-Hybridpersistenz. Datensicherheit und Backup stehen im Mittelpunkt der Betriebs- und Wartungsarbeiten. Werfen wir einen Blick auf die Einführungs- und Anwendungsszenarien der RDB-Persistenz.

Die von Redis verwendete Standardpersistenzmethode ist, dass RDB-Dateien sehr wenig Speicherplatz beanspruchen, sodass die Dateigenerierungs- und Ladegeschwindigkeit sehr hoch ist.

RDB-Datei generieren

Das Generieren einer RDB-Datei ist in manuelle Methode und automatische Methode unterteilt .

Schauen Sie sich zunächst die manuelle Methode an. Es gibt zwei Befehle, die die Generierung von RDB-Dateien auslösen können. Der Unterschied zwischen save und bgsave besteht darin, dass der Speichervorgang Redis blockiert, bis die RDB-Dateigenerierung abgeschlossen ist. Aber bgsave blockiert Redis nicht, sondern spaltet einen untergeordneten Prozess ab und schließt die Generierung der RDB-Datei im untergeordneten Prozess ab.

Im automatischen Modus gibt es mehrere Situationen, wie folgt:

  • Der Änderungsvorgang des aktuellen Schlüssels entspricht den Konfigurationsanforderungen von Rdb in Redis

  • Wenn der Master-Slave-Knoten eine vollständige Replikation durchführt

  • Wenn Redis neu gestartet oder heruntergefahren wird (Redis-Persistenzmodus ist RDB)

Hier konzentrieren wir uns auf die entsprechende Konfiguration von RDB.

Das Verzeichnis, in dem die RDB-Datei gespeichert wird, wird durch das Konfigurationselement dir bestimmt

# rdb文件保存目录
dir "/usr/local/redis/var"

Der Dateiname wird durch dbfilename bestimmt

dbfilename "dump.rdb"

Der Auslösemechanismus wird durch das Speichern bestimmt item

save 900 1
save 300 10
save 60 10000

Die Bedeutung der obigen Konfiguration besteht darin, dass sie ausgelöst wird, wenn innerhalb von 900 Sekunden 1 Änderungsvorgang erfolgt, dass sie ausgelöst wird, wenn innerhalb von 300 Sekunden 10 Änderungsvorgänge erfolgen, und dass sie ausgelöst wird, wenn Innerhalb von 60 Sekunden gibt es 10.000 Änderungsvorgänge.

Darüber hinaus bestimmt das Konfigurationselement rdbcompression, ob die RDB-Datei komprimiert werden soll. Der Standardwert ist „Ja“, was Komprimierung bedeutet, was auch die empfohlene Methode ist.

RDB-Dateigenerierungsprozess

RDB für Redis-Datenpersistenz

Da das Speichern fast abgebrochen wurde, wird Redis automatisch mithilfe des BGSAVE-Vorgangs ausgelöst. Daher stellen wir hier nur den Prozess von bgsave vor.

  1. Wenn beim Ausführen von bgsave derzeit ein untergeordneter Prozess vorhanden ist, wird Redis direkt beendet, ohne die folgenden Vorgänge auszuführen. Wenn nicht, fahren Sie mit der Ausführung fort.

  2. Der Redis-Hauptprozess wird einen untergeordneten Prozess hervorbringen. Redis wird während der Gabelung blockiert, aber die Zeit ist sehr kurz.

  3. Nachdem der Fork erfolgreich war, macht der Redis-Hauptprozess weiterhin das, was er tun soll.

  4. Der untergeordnete Prozess generiert eine neue RDB-Datei und ersetzt die alte RDB-Datei.

  5. Wenn der Ersetzungsvorgang abgeschlossen ist, benachrichtigt der untergeordnete Prozess den übergeordneten Prozess und der übergeordnete Prozess speichert die relevanten Informationen dieses Vorgangs.

Anwendungsszenarien

RDB-Dateien sind klein und schnell zu generieren und zu laden, aber die RDB-Persistenzmethode Diese Echtzeitpersistenz kann nicht erreicht werden, was unter ungewöhnlichen Umständen leicht zu Datenverlust führen kann. Darüber hinaus können verschiedene Versionen von RDB-Dateien inkompatibel sein.

Anhand der obigen Einführung können Sie erkennen, dass sich RDB-Dateien sehr gut für Disaster-Recovery-Backups eignen, beispielsweise für die morgendliche Generierung von RDB-Dateien. Wenn außerdem die in Redis gespeicherten Daten nicht allzu wichtig sind, z. B. die Verwendung von Redis zum Zwischenspeichern, und der Verlust einiger Daten keine Auswirkungen hat, ist die Verwendung von RDB normalerweise die bessere Möglichkeit.

Lassen Sie uns eine Lösung für ein häufiges Problem vorstellen: Wenn die Partition, auf der Redis-Daten gespeichert sind, fast voll ist, können Sie Daten auf eine andere Partition schreiben, ohne Redis zu stoppen. Wir können config set dir 'new partition directory' verwenden, um das Verzeichnis zu ändern, in dem die RDB-Datei gespeichert ist. Führen Sie dann bgsave aus, um eine neue RDB-Datei im neuen Verzeichnis zu generieren.

Das obige ist der detaillierte Inhalt vonRDB für Redis-Datenpersistenz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn