Heim > Datenbank > Redis > Mehrere Möglichkeiten der Redis-Persistenz

Mehrere Möglichkeiten der Redis-Persistenz

angryTom
Freigeben: 2019-11-28 16:57:42
nach vorne
1700 Leute haben es durchsucht

Redis liest und schreibt im Speicher, daher ist die Leistung hoch, aber die Daten im Speicher gehen beim Neustart des Servers verloren. Um sicherzustellen, dass die Daten nicht verloren gehen, müssen wir die Daten verschieben im Speicher zu Die Daten werden auf der Festplatte gespeichert, sodass die Originaldaten beim Neustart von Redis von der Festplatte wiederhergestellt werden können. Der gesamte Vorgang wird als Redis-Persistenz bezeichnet.

Mehrere Möglichkeiten der Redis-Persistenz

Redis-Persistenz ist auch einer der Hauptunterschiede zwischen Redis und Memcached , denn Memcached ist es nicht mit Persistenzfunktion.

1. Mehrere Persistenzmethoden

Redis-Persistenz verfügt über die folgenden drei Methoden:

Snapshot-Methode (RDB, Redis DataBase) speichert die Speicherdaten Ein bestimmter Moment wird in binärer Form auf die Festplatte geschrieben.

Der Dateianhängemodus (AOF, Append Only File) zeichnet alle Betriebsbefehle auf und hängt sie in Form von Text an die Datei an Hybrid-Persistenzmethode, eine neue Methode, die nach Redis 4.0 hinzugefügt wurde. Beim Schreiben werden die aktuellen Daten zunächst in Form von RDB gespeichert die Datei im AOF-Format, was nicht nur die Geschwindigkeit des Redis-Neustarts gewährleisten, sondern auch das Risiko eines Datenverlusts verringern kann.

Da jede Persistenzlösung spezifische Nutzungsszenarien hat, beginnen wir mit der RDB-Persistenz.

2. Einführung in RDB

RDB (Redis DataBase) ist der Prozess des Schreibens eines Speicher-Snapshots (Snapshot) zu einem bestimmten Zeitpunkt in binärer Form auf die Festplatte.

3. Persistenzauslösung

Es gibt zwei Arten von Persistenzauslösungsmethoden für RDB: eine ist die manuelle Auslösung und die andere ist die automatische Auslösung.

1) Manuelles Auslösen

Es gibt zwei Vorgänge, die die Persistenz manuell auslösen: save und bgsave. Der Hauptunterschied zwischen ihnen besteht darin, ob die Ausführung des Redis-Hauptthreads blockiert werden soll.

① Speicherbefehl

Das Ausführen des Speicherbefehls im Client löst die Persistenz von Redis aus, versetzt Redis aber gleichzeitig auch in einen blockierenden Zustand bis Die RDB bleibt erhalten, bis sie abgeschlossen ist. Daher muss sie in einer Produktionsumgebung mit Vorsicht verwendet werden. Der Befehl

Speichern wird wie folgt verwendet:

Wie aus dem Bild ersichtlich ist, wird nach Ausführung des Befehls Mehrere Möglichkeiten der Redis-Persistenz die Änderungszeit der persistenten Datei geändert
Änderungen, was bedeutet, dass save die RDB-Persistenz erfolgreich ausgelöst hat. dump.rdbBefehlsausführungsprozess speichern, wie unten gezeigt: save

Mehrere Möglichkeiten der Redis-Persistenz

② bgsave-Befehl

bgsave (Hintergrundspeicherung) ist beides im Hintergrund Der größte Unterschied zwischen ihm und dem Speicherbefehl besteht darin, dass bgsave einen untergeordneten Prozess forkt (), um eine Persistenz durchzuführen. Während des gesamten Prozesses gibt es nur eine kurze Blockierung, wenn fork () den untergeordneten Prozess durchführt Der Redis-Hauptprozess kann auf Anfragen anderer Clients reagieren. Im Vergleich zum Speicherbefehl, der den gesamten Prozess blockiert, ist der Befehl bgsave für uns offensichtlich besser geeignet. Der Befehl

bgsave wird wie in der Abbildung unten gezeigt verwendet:

Der Ausführungsprozess von bgsave ist wie in der Abbildung unten dargestellt: Mehrere Möglichkeiten der Redis-Persistenz

Mehrere Möglichkeiten der Redis-Persistenz2) Automatische Auslösung

Nachdem wir über die manuelle Auslösemethode von RDB gesprochen haben, schauen wir uns an, wie man die RDB-Persistenz automatisch auslöst.

Die automatische RDB-Persistenz tritt hauptsächlich in den folgenden Situationen auf.


① m n speichern

m n speichern bedeutet, dass die Persistenz automatisch ausgelöst wird, wenn sich n Tasten innerhalb von m Sekunden ändern.

Die Parameter m und n sind in der Redis-Konfigurationsdatei zu finden. Save 60 1 gibt beispielsweise an, dass die RDB-Persistenz ausgelöst wird, wenn sich mindestens ein Schlüssel innerhalb von 60 Sekunden ändert.

Persistenz automatisch auslösen. Das Wesentliche ist, dass Redis automatisch einen bgsave-Befehl ausführt, wenn die festgelegten Triggerbedingungen erfüllt sind.

Hinweis: Beim Festlegen mehrerer save m n-Befehle wird die Persistenz ausgelöst, wenn eine Bedingung erfüllt ist.

Zum Beispiel richten wir die folgenden zwei save m n-Befehle ein:

save 60 10save 600 1
Nach dem Login kopieren

Wenn sich der Redis-Schlüsselwert innerhalb von 60 Sekunden zehnmal ändert, wird die Persistenz ausgelöst Wenn sich der Wert weniger als zehnmal ändert, ermittelt Redis, ob der Redis-Schlüsselwert innerhalb von 600 Sekunden mindestens einmal geändert wurde. Wenn dies der Fall ist, wird die Persistenz ausgelöst.

② Flushall

flushall 命令用于清空 Redis 数据库,在生产环境下一定慎用,当 Redis 执行了 flushall 命令之后,则会触发自动持久化,把 RDB 文件清空。

执行结果如下图所示:

Mehrere Möglichkeiten der Redis-Persistenz

③ 主从同步触发

在 Redis 主从复制中,当从节点执行全量复制操作时,主节点会执行 bgsave 命令,并将 RDB 文件发送给从节点,该过程会自动触发 Redis 持久化。

4.配置说明

合理的设置 RDB 的配置,可以保障 Redis 高效且稳定的运行,下面一起来看 RDB 的配置项都有哪些?

RDB 配置参数可以在 Redis 的配置文件中找见,具体内容如下:

# RDB 保存的条件
save 900 1
save 300 10
save 60 10000

# bgsave 失败之后,是否停止持久化数据到磁盘,yes 表示停止持久化,no 表示忽略错误继续写文件。
stop-writes-on-bgsave-error yes

# RDB 文件压缩
rdbcompression yes

# 写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。
rdbchecksum yes

# RDB 文件名
dbfilename dump.rdb

# RDB 文件目录
dir ./
Nach dem Login kopieren

其中比较重要的参数如下列表:

① save 参数

它是用来配置触发 RDB 持久化条件的参数,满足保存条件时将会把数据持久化到硬盘。
默认配置说明如下:

save 900 1:表示 900 秒内如果至少有 1 个 key 值变化,则把数据持久化到硬盘;save 300 10:表示 300 秒内如果至少有 10 个 key 值变化,则把数据持久化到硬盘;save 60 10000:表示 60 秒内如果至少有 10000 个 key 值变化,则把数据持久化到硬盘。

② rdbcompression 参数

它的默认值是 yes 表示开启 RDB 文件压缩,Redis 会采用 LZF 算法进行压缩。如果不想消耗 CPU 性能来进行文件压缩的话,可以设置为关闭此功能,这样的缺点是需要更多的磁盘空间来保存文件。

③ rdbchecksum 参数

它的默认值为 yes 表示写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。

5.配置查询

Redis 中可以使用命令查询当前配置参数。查询命令的格式为:config get xxx ,例如,想要获取 RDB 文件的存储名称设置,可以使用 config get dbfilename ,执行效果如下图所示:

Mehrere Möglichkeiten der Redis-Persistenz
查询 RDB 的文件目录,可使用命令 config get dir ,执行效果如下图所示:

Mehrere Möglichkeiten der Redis-Persistenz

6.配置设置

设置 RDB 的配置,可以通过以下两种方式:

● 手动修改 Redis 配置文件;

● 使用命令行设置,例如,使用 config set dir "/usr/data" 就是用于修改 RDB 的存储目录。

注意:手动修改 Redis 配置文件的方式是全局生效的,即重启 Redis 服务器设置参数也不会丢失,而使用命令修改的方式,在 Redis 重启之后就会丢失。但手动修改 Redis 配置文件,想要立即生效需要重启 Redis 服务器,而命令的方式则不需要重启 Redis 服务器。

小贴士:Redis 的配置文件位于 Redis 安装目录的根路径下,默认名称为 redis.conf。

7.RDB 文件恢复

当 Redis 服务器启动时,如果 Redis 根目录存在 RDB 文件 dump.rdb,Redis 就会自动加载 RDB 文件恢复持久化数据。

如果根目录没有 dump.rdb 文件,请先将 dump.rdb 文件移动到 Redis 的根目录。

验证 RDB 文件是否被加载

Redis 在启动时有日志信息,会显示是否加载了 RDB 文件,我们执行 Redis 启动命令:src/redis-server redis.conf ,如下图所示:
Mehrere Möglichkeiten der Redis-Persistenz
从日志上可以看出, Redis 服务在启动时已经正常加载了 RDB 文件。

小贴士:Redis 服务器在载入 RDB 文件期间,会一直处于阻塞状态,直到载入工作完成为止。

8.RDB 优缺点

1)RDB 优点

● RDB 的内容为二进制的数据,占用内存更小,更紧凑,更适合做为备份文件;

● RDB ist sehr nützlich für die Notfallwiederherstellung. Es handelt sich um eine kompakte Datei, die für die Wiederherstellung von Redis-Diensten schneller übertragen werden kann.

● RDB kann die Ausführungsgeschwindigkeit von Redis erheblich steigern Da der Redis-Hauptprozess jedes Mal einen untergeordneten Prozess forkt (), um die Daten auf der Festplatte beizubehalten, führt der Redis-Hauptprozess keine Vorgänge wie Festplatten-E/A und AOF aus Formatdateien Im Vergleich können RDB-Dateien schneller neu gestartet werden.

2) Nachteile von RDB

● Da RDB Daten nur für einen bestimmten Zeitraum speichern kann, gehen die Redis-Daten für einen bestimmten Zeitraum verloren, wenn der Redis-Dienst versehentlich auf halbem Weg beendet wird ;

● RDB erfordert häufiges fork(), um es mithilfe untergeordneter Prozesse auf der Festplatte beizubehalten. Fork() kann zeitaufwändig sein, wenn der Datensatz groß ist, und kann dazu führen, dass Redis die Clients für einige Millisekunden oder sogar eine Sekunde nicht mehr bedient, wenn der Datensatz groß und die CPU-Leistung schlecht ist.

9. Deaktivieren der Persistenz

Das Deaktivieren der Persistenz kann die Ausführungseffizienz von Redis verbessern, Sie können den Client verbinden und

<span style="background-color: rgb(253, 234, 218); color: rgb(255, 0, 0);">config set save ""</span> Befehl zum Deaktivieren der Redis-Persistenz, wie in der folgenden Abbildung dargestellt:

Mehrere Möglichkeiten der Redis-Persistenz

Zusammenfassung

In diesem Artikel können wir erfahren, dass die RDB-Persistenz in zwei Methoden unterteilt ist: manuelles Auslösen und automatisches Auslösen. Der Vorteil besteht darin, dass die Speicherdatei klein ist und die Datenwiederherstellung beim Start von Redis schneller erfolgt Daten. Das Wiederherstellen von RDB-Dateien ist ebenfalls sehr einfach. Sie müssen die RDB-Dateien nur im Stammverzeichnis von Redis ablegen, und die Daten werden beim Start von Redis automatisch geladen und wiederhergestellt.

Weitere Informationen zu Redis finden Sie in der Spalte

Tutorial zur Redis-Nutzung

!

Das obige ist der detaillierte Inhalt vonMehrere Möglichkeiten der Redis-Persistenz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage