Heim  >  Artikel  >  Datenbank  >  In Redis gibt es zwei Persistenzmethoden. Warum werden zwei Persistenzmethoden benötigt?

In Redis gibt es zwei Persistenzmethoden. Warum werden zwei Persistenzmethoden benötigt?

青灯夜游
青灯夜游nach vorne
2021-10-25 10:35:211281Durchsuche

In

Redis gibt es zwei Arten von Persistenz (AOF und RDB). Es wird für alle nützlich sein.

In Redis gibt es zwei Persistenzmethoden. Warum werden zwei Persistenzmethoden benötigt?

Zwei Persistenzmethoden von Redis

Wie wir alle wissen, bietet Redis zwei Persistenzmethoden: AOF und RDB.

RDB-Persistenz

  • RDB-Persistenz dient dazu, den Status der Datenbank zum aktuellen Zeitpunkt auf der Festplatte zu speichern, auch bekannt als Snapshot-Persistenz.
  • RDB kann je nach Serverkonfiguration manuell ausgelöst oder regelmäßig ausgeführt werden.
  • Die von RDB generierte Datei ist eine komprimierte Binärdatei. Die Datenbank kann über diese Datei in den Zustand zu diesem Zeitpunkt zurückversetzt werden. Redis stellt den Vordergrund-RDB-Persistenzbefehl SAVE und den Hintergrund-RDB-Persistenzbefehl BGSAVE bereit. Bei Ausführung im Vordergrund werden andere Redis-Befehle blockiert, bei Ausführung im Hintergrund, Redis Sie können auch weiterhin Client-Befehlsanfragen verarbeiten.
  • In der RDB-Binärdatei werden Schlüssel-Wert-Paardaten unter Verwendung einer komprimierten benutzerdefinierten Codierung mit Überprüfung gespeichert. Es kann mit dem Befehl od in lesbares Format umgewandelt werden. SAVE和后台RDB持久化命令BGSAVE,前台执行时,Redis的其他命令会被阻塞,而后台执行时,Redis还可以继续处理客户端的命令请求。
  • RDB二进制文件中,保存的是键值对数据,采用经过压缩的自定义编码,带校验。通过od命令可以转化为可读。
  • 主从复制时,初始化的全量复制采用RDB文件。

【相关推荐:Redis视频教程

AOF持久化

  • AOF持久化,全称是Appen Only File,意思是追加的持久化方式,其中保存的是写命令,而非数据。
  • AOF持久化过程分为命令追加、文件写入、文件同步三个步骤。
  • 命令追加:Redis服务端每执行完一个写命令,都会以AOF协议格式将该写命令追加到服务器状态的aof_buf缓冲区末尾。
  • 文件写入:Redis中,每结束一个事件循环之前,都会调用flushAppendOnlyFile函数,将aof_buf缓冲区中的内容写入到AOF文件。
  • 文件同步:同步sync指的是文件写入到操作系统缓冲区中时,是否直接同步到磁盘中。通过配置,可以选择立即同步、每秒同步、不主动同步而由操作系统控制,这三种同步方式。关于文件I/O缓冲:https://www.litreily.top/2018/10/25/io-cache/
  • Redis优先使用AOF文件来恢复数据。
  • AOF文件由于存储命令,且没有经过压缩,其体积要大于RDB文件。
  • AOF文件可以定期采用BGREWRITEAOF重写,减少重复命令、已失效命令,合并命令等。
  • AOF文件支持后台重写,采用fork子进程的形式实现。子进程带有服务器进程的数据副本,再避免使用锁的情况下保证数据安全性。另外也采用AOF重写缓冲区解决了数据不一致。

两种持久化分别的优缺点

RDB的优点

  • 文件体积小,适合拷贝做冷备

  • 相比AOF,备份恢复速度更快

RDB的缺点

  • 丢失数据多

  • fork子进程来做BGSAVE,消耗一定的内存资源

AOF的优点

  • 丢失数据少

  • 增加了写缓冲区,无需寻址,速度快

  • append-only,也无需做磁盘寻址,效率高

AOF的缺点

  • 文件体积大

  • AOF每次都需要做一下写入aof_buf

    Während der Master-Slave-Replikation verwendet die initialisierte vollständige Replikation RDB-Dateien.

【Verwandte Empfehlung: Redis-Video-Tutorial

AOF-Persistenz

  • AOF-Persistenz, der vollständige Name lautet Appen Only File , also die angehängte Persistenzmethode, bei der Schreibbefehle statt Daten gespeichert werden.

  • Der AOF-Persistenzprozess ist in drei Schritte unterteilt: Befehlsanhängen, Dateischreiben und Dateisynchronisierung.
  • Befehlsanhängen: Jedes Mal, wenn der Redis-Server einen Schreibbefehl ausführt, hängt er den Schreibbefehl an das Ende des aof_buf-Puffers im Serverstatus im AOF-Protokollformat an.

  • Dateischreiben: In Redis wird vor dem Ende jeder Ereignisschleife die Funktion flushAppendOnlyFile aufgerufen, um den Inhalt des Puffers aof_buf in die AOF-Datei zu schreiben.
  • Dateisynchronisierung: Synchronisierung sync bezieht sich darauf, ob die Datei direkt mit der Festplatte synchronisiert wird, wenn sie in den Betriebssystempuffer geschrieben wird. Durch die Konfiguration können Sie zwischen drei Synchronisierungsmethoden wählen: sofortige Synchronisierung, Synchronisierung jede Sekunde und keine aktive Synchronisierung, sondern vom Betriebssystem gesteuert. Informationen zur Datei-E/A-Pufferung: https:// www.litreily.top/2018/10/25/io-cache/

  • Redis gibt der Verwendung von AOF-Dateien zur Datenwiederherstellung Vorrang.

    AOF-Dateien sind größer als RDB-Dateien, da sie Befehle speichern und nicht komprimiert sind. 🎜🎜AOF-Dateien können regelmäßig mit BGREWRITEAOF neu geschrieben werden, um doppelte Befehle, abgelaufene Befehle, zusammengeführte Befehle usw. zu reduzieren. 🎜🎜AOF-Dateien unterstützen das Umschreiben im Hintergrund, das in Form eines fork-Unterprozesses implementiert wird. Der untergeordnete Prozess verfügt über eine Kopie der Daten des Serverprozesses und gewährleistet so die Datensicherheit ohne Verwendung von Sperren. Darüber hinaus wird AOF auch zum Umschreiben des Puffers verwendet, um Dateninkonsistenzen zu beheben. 🎜🎜

    🎜Die Vor- und Nachteile der beiden Persistenztypen🎜🎜

    🎜Die Vorteile von RDB🎜🎜🎜🎜🎜Die Datei Die Größe ist klein und eignet sich zum Kopieren für Kaltsicherungen. 🎜🎜🎜🎜Im Vergleich zu AOF ist die Sicherungs- und Wiederherstellungsgeschwindigkeit schneller data🎜🎜🎜🎜fork Der untergeordnete Prozess führt BGSAVE aus, was eine bestimmte Menge an Speicherressourcen verbraucht🎜🎜🎜

    🎜Die Vorteile von AOF🎜🎜🎜 🎜🎜weniger Datenverlust🎜🎜🎜🎜Schreibpuffer erhöhen, keine Adressierung erforderlich, schnell🎜🎜🎜🎜nur Anhängen, keine Festplattenadressierung erforderlich, hohe Effizienz🎜🎜🎜

    🎜Nachteile von AOF🎜🎜🎜 🎜🎜Die Dateigröße ist groß🎜🎜🎜🎜AOF muss jedes Mal aof_buf schreiben. Nachdem die AOF-Persistenz aktiviert wurde, wird die QPS leicht reduziert Warum braucht Redis zwei Arten von Persistenzänderungen? 🎜🎜🎜Nach der obigen Überprüfung können wir sehen, dass es offensichtliche Unterschiede zwischen RDB- und AOF-Persistenz gibt. 🎜🎜🎜🎜Gespeicherter Inhalt: RDB speichert Daten zu einem bestimmten Zeitpunkt; AOF speichert ausgeführte Schreibbefehle. 🎜🎜🎜🎜Dateigröße: RDB-Dateien sind kleiner; AOF-Dateien sind größer. 🎜🎜🎜🎜Schreibmethode: RDB kann die Vordergrund-/Hintergrund-Schreibmethode verwenden. AOF verwendet die Methode, den Befehl jedes Mal im Puffer zu speichern, wenn ein Schreibbefehl ausgeführt wird, und kann regelmäßig neu geschrieben werden. 🎜🎜🎜🎜Datenverlust: RDB verliert alle Daten zwischen der Ausfallzeit und der letzten RDB-Synchronisierung; AOF verliert Daten für 1 Sekunde oder einige Sekunden, je nach der im E/A-Puffer konfigurierten Aktualisierungsmethode. 🎜

Basierend auf diesen Vergleichen können wir sehen, dass RDB-Persistenz besser zum Speichern von Daten zu einem bestimmten Zeitpunkt und zum Kopieren an andere Orte während der Master-Slave-Replikation oder der vollständigen Datenwiederherstellung außerhalb des Standorts geeignet ist, während AOF Persistenz ist aufgrund von Datenverlust teurer, sie eignet sich besser als lokale Sicherung und als Fehlerwiederherstellung, wenn Reids hängt und neu startet. Das ist es, was ich verstehe: „Warum Redis zwei Persistenzmethoden erfordert.“ Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung

! !

Das obige ist der detaillierte Inhalt vonIn Redis gibt es zwei Persistenzmethoden. Warum werden zwei Persistenzmethoden benötigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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