In
Redis gibt es zwei Arten von Persistenz (AOF und RDB). Es wird für alle nützlich sein.
Wie wir alle wissen, bietet Redis zwei Persistenzmethoden: AOF und RDB.
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. od
in lesbares Format umgewandelt werden. SAVE
和后台RDB持久化命令BGSAVE
,前台执行时,Redis的其他命令会被阻塞,而后台执行时,Redis还可以继续处理客户端的命令请求。od
命令可以转化为可读。【相关推荐:Redis视频教程】
Appen Only File
,意思是追加的持久化方式,其中保存的是写命令,而非数据。aof_buf
缓冲区末尾。flushAppendOnlyFile
函数,将aof_buf
缓冲区中的内容写入到AOF文件。sync
指的是文件写入到操作系统缓冲区中时,是否直接同步到磁盘中。通过配置,可以选择立即同步、每秒同步、不主动同步而由操作系统控制,这三种同步方式。关于文件I/O缓冲:https://www.litreily.top/2018/10/25/io-cache/
BGREWRITEAOF
重写,减少重复命令、已失效命令,合并命令等。fork
子进程的形式实现。子进程带有服务器进程的数据副本,再避免使用锁的情况下保证数据安全性。另外也采用AOF重写缓冲区解决了数据不一致。文件体积小,适合拷贝做冷备
相比AOF,备份恢复速度更快
丢失数据多
fork子进程来做BGSAVE
,消耗一定的内存资源
丢失数据少
增加了写缓冲区,无需寻址,速度快
append-only,也无需做磁盘寻址,效率高
文件体积大
AOF每次都需要做一下写入aof_buf
AOF-Persistenz
AOF-Persistenz, der vollständige Name lautet Appen Only File
, also die angehängte Persistenzmethode, bei der Schreibbefehle statt Daten gespeichert werden.
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.
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/
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. 🎜🎜BGSAVE
aus, was eine bestimmte Menge an Speicherressourcen verbraucht🎜🎜🎜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!