Redis-Persistenzlösungen werden in zwei Typen unterteilt: RDB und AOF.
RDB-Persistenz kann je nach Konfiguration manuell oder regelmäßig ausgeführt werden. Ihre Funktion besteht darin, den Datenbankstatus zu einem bestimmten Zeitpunkt in einer RDB-Datei zu speichern Der Zustand der Datenbank zu einem bestimmten Zeitpunkt wiederhergestellt. Da die RDB-Datei auf der Festplatte gespeichert wird, kann sie auch dann verwendet werden, wenn Redis abstürzt oder beendet wird, solange die RDB-Datei vorhanden ist, um den Status der Datenbank wiederherzustellen.
Sie können RDB-Dateien über SAVE oder BGSAVE generieren.
Der SAVE-Befehl blockiert den Redis-Prozess, bis die RDB-Datei generiert wird. Während des Prozessblockierungszeitraums kann Redis keine Befehlsanfragen verarbeiten, was offensichtlich unangemessen ist.
BGSAVE gibt einen untergeordneten Prozess aus, und dann ist der untergeordnete Prozess für die Generierung der RDB-Datei verantwortlich. Der übergeordnete Prozess kann weiterhin Befehlsanforderungen verarbeiten, ohne den Prozess zu blockieren.
AOF unterscheidet sich von RDB und zeichnet den Datenbankstatus auf, indem es die vom Redis-Server ausgeführten Schreibbefehle speichert.
AOF implementiert den Persistenzmechanismus in drei Schritten: Anhängen, Schreiben und Synchronisieren.
Wenn die AOF-Persistenz aktiviert ist, wird der Schreibbefehl an das Ende des aof_buf-Puffers angehängt, nachdem der Server den Schreibbefehl ausgeführt hat.
Bevor der Server jede Ereignisschleife beendet, wird die Funktion „flushAppendOnlyFile“ als „Deciding“ bezeichnet Ob der Inhalt von aof_buf in der AOF-Datei gespeichert werden soll, kann durch die Konfiguration von appendfsync bestimmt werden.
always ##aof_buf内容写入并同步到AOF文件 everysec ##将aof_buf中内容写入到AOF文件,如果上次同步AOF文件时间距离现在超过1秒,则再次对AOF文件进行同步 no ##将aof_buf内容写入AOF文件,但是并不对AOF文件进行同步,同步时间由操作系统决定
Wenn nicht festgelegt, ist die Standardoption „Everysec“, da immer die sicherste Option ist (nur ein Schreibbefehl der Ereignisschleife geht verloren), die Leistung jedoch schlecht ist und der Modus „Everysec“ möglicherweise nur 1 Sekunde verliert Taktdaten, während die Effizienz des No-Modus der von Everysec ähnelt, jedoch alle Schreibbefehlsdaten nach der letzten Synchronisierung der AOF-Datei verloren gehen.
Das obige ist der detaillierte Inhalt vonWas sind die Persistenzlösungen in Redis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!