Maison >base de données >Redis >Plusieurs façons de persistance Redis

Plusieurs façons de persistance Redis

angryTom
angryTomavant
2019-11-28 16:57:421697parcourir

Redis lit et écrit en mémoire, ses performances sont donc élevées, mais les données en mémoire seront perdues au redémarrage du serveur. Afin de garantir que les données ne sont pas perdues, nous devons déplacer les données. dans la mémoire pour Les données sont stockées sur le disque afin que les données d'origine puissent être restaurées à partir du disque au redémarrage de Redis, et l'ensemble du processus est appelé persistance Redis.

Plusieurs façons de persistance Redis

La persistance de Redis est également l'une des principales différences entre Redis et Memcached , car Memcached est pas avec fonction de persistance.

1. Plusieurs méthodes de persistance

La persistance Redis a les trois méthodes suivantes :

La méthode Snapshot (RDB, Redis DataBase) permettra aux données mémoire de un certain moment est écrit sur le disque sous forme binaire ;

Le mode d'ajout de fichier (AOF, Append Only File) enregistre toutes les commandes d'opération et les ajoute au fichier sous forme de texte ; Méthode de persistance hybride, une nouvelle méthode ajoutée après Redis 4.0. La persistance hybride combine les avantages de RDB et AOF Lors de l'écriture, les données actuelles sont d'abord écrites au début du fichier sous forme de RDB. le fichier au format AOF, ce qui peut non seulement garantir la vitesse de redémarrage de Redis, mais également réduire le risque de perte de données.

Étant donné que chaque solution de persistance a des scénarios d'utilisation spécifiques, commençons par la persistance RDB.

2. Introduction à RDB

RDB (Redis DataBase) est le processus d'écriture d'un instantané de mémoire (Snapshot) à un certain moment sur le disque sous forme binaire.

3. Déclenchement de persistance

Il existe deux types de méthodes de déclenchement de persistance pour RDB : l'une est le déclenchement manuel et l'autre est le déclenchement automatique.

1) Déclencher manuellement

Il existe deux opérations qui déclenchent manuellement la persistance : save et bgsave La principale différence entre elles est : s'il faut bloquer l'exécution du thread principal Redis.

① commande save

L'exécution de la commande save dans le client déclenchera la persistance de Redis, mais en même temps elle mettra également Redis dans un état de blocage jusqu'à ce que le RDB est persistant. Il ne répondra pas aux commandes envoyées par d'autres clients tant qu'il n'est pas terminé, il doit donc être utilisé avec prudence dans un environnement de production. La commande

save est utilisée comme suit :

Comme le montre l'image, après l'exécution de la commande Plusieurs façons de persistance Redis, l'heure de modification du fichier persistant
change. , ce qui signifie que save a déclenché avec succès la persistance RDB. dump.rdbprocessus d'exécution de la commande de sauvegarde, comme indiqué ci-dessous : save

Plusieurs façons de persistance Redis

② commande bgsave

bgsave (sauvegarde en arrière-plan) est à la fois en arrière-plan La signification de la sauvegarde, la plus grande différence entre celle-ci et la commande save est que bgsave fork() un processus enfant pour effectuer la persistance. Pendant tout le processus, il n'y a qu'un court blocage lorsque fork() le processus enfant. Le processus est créé, Redis Le processus principal peut répondre aux demandes d'autres clients. Par rapport à la commande save qui bloque l'ensemble du processus, la commande bgsave est évidemment plus adaptée à notre utilisation. La commande

bgsave est utilisée comme indiqué dans la figure ci-dessous :

Le processus d'exécution de bgsave est tel qu'indiqué dans la figure ci-dessous : Plusieurs façons de persistance Redis

Plusieurs façons de persistance Redis2) Déclenchement automatique

Après avoir parlé de la méthode de déclenchement manuel de RDB, voyons comment déclencher automatiquement la persistance RDB ?

La persistance automatique RDB provient principalement des situations suivantes.


① save m n

save m n signifie que si n touches changent en m secondes, la persistance sera automatiquement déclenchée.

Les paramètres m et n se trouvent dans le fichier de configuration Redis. Par exemple, save 60 1 indique que si au moins une clé change dans les 60 secondes, la persistance RDB sera déclenchée.

Déclencher automatiquement la persistance. L'essentiel est que Redis exécutera automatiquement une commande bgsave si les conditions de déclenchement définies sont remplies.

Remarque : lors de la définition de plusieurs commandes de sauvegarde m n, la persistance sera déclenchée si une condition est remplie.

Par exemple, nous avons configuré les deux commandes save m n suivantes :

save 60 10save 600 1

Lorsque la valeur de la clé Redis change 10 fois dans les 60 s, la persistance sera déclenchée si la valeur de la clé Redis change dans les 60 s ; Si la valeur change moins de 10 fois, Redis déterminera si la valeur de la clé Redis a été modifiée au moins une fois en 600 secondes, et si tel est le cas, la persistance sera déclenchée.

② chasse d'eau

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

执行结果如下图所示:

Plusieurs façons de persistance Redis

③ 主从同步触发

在 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 ./

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

① 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 ,执行效果如下图所示:

Plusieurs façons de persistance Redis
查询 RDB 的文件目录,可使用命令 config get dir ,执行效果如下图所示:

Plusieurs façons de persistance Redis

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 ,如下图所示:
Plusieurs façons de persistance Redis
从日志上可以看出, Redis 服务在启动时已经正常加载了 RDB 文件。

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

8.RDB 优缺点

1)RDB 优点

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

● RDB est très utile pour la reprise après sinistre. Il s'agit d'un fichier compact qui peut être transféré plus rapidement vers un serveur distant pour la récupération du service Redis

● RDB peut augmenter davantage la vitesse d'exécution de Redis ; . Étant donné que le processus principal Redis fork() un processus enfant à chaque fois qu'il est persistant pour conserver les données sur le disque, le processus principal Redis n'effectuera pas d'opérations telles que les E/S du disque

● et AOF ; formater les fichiers En comparaison, les fichiers RDB peuvent être redémarrés plus rapidement.

2) Inconvénients de RDB

● Étant donné que RDB ne peut enregistrer les données que pendant un certain intervalle de temps, si le service Redis est accidentellement interrompu à mi-chemin, les données Redis pendant un certain temps seront perdues ;

● RDB nécessite un fork() fréquent pour le conserver sur le disque à l'aide de processus enfants. Fork() peut prendre du temps si l'ensemble de données est volumineux et peut empêcher Redis de servir les clients pendant quelques millisecondes, voire une seconde si l'ensemble de données est volumineux et que les performances du processeur sont médiocres.

9. Désactiver la persistance

La désactivation de la persistance peut améliorer l'efficacité d'exécution de Redis Si vous n'êtes pas sensible à la perte de données, vous pouvez connecter le client et exécuter le <.><span style="background-color: rgb(253, 234, 218); color: rgb(255, 0, 0);">config set save ""</span> commande pour désactiver la persistance Redis, comme indiqué dans la figure ci-dessous :

Plusieurs façons de persistance Redis

RésuméA travers cet article nous pouvons apprendre que la persistance RDB se divise en deux méthodes : le déclenchement manuel et le déclenchement automatique. Son avantage est que le fichier de stockage est petit et la récupération des données est plus rapide au démarrage de Redis. L'inconvénient est qu'il y a un risque de perte. données. La restauration des fichiers RDB est également très simple. Il vous suffit de placer les fichiers RDB dans le répertoire racine de Redis, et les données seront automatiquement chargées et restaurées au démarrage de Redis.

Pour plus de connaissances sur Redis, veuillez visiter la colonne

Tutoriel d'utilisation de Redis

 !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer