Maison > Article > base de données > En savoir plus sur la méthode d'instantané (RDB) dans la persistance Redis
Cet article vous présentera la méthode snapshot (RDB) dans la persistance Redis. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
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 les données sans les perdre, nous devons stocker les données dans la mémoire sur le disque afin que les données d'origine puissent être restaurées à partir du disque au redémarrage de Redis. L'ensemble du processus est appelé persistance Redis.
La persistance de Redis est également l'une des principales différences entre Redis et Memcached, car Memcached n'a pas de fonction de persistance.
La persistance Redis a les trois méthodes suivantes :
Étant donné que chaque solution de persistance a des scénarios d'utilisation spécifiques, commençons par la persistance RDB.
RDB (Redis DataBase) est le processus d'écriture d'un instantané de mémoire (Snapshot) à un moment donné sur le disque sous forme binaire.
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.
Il existe deux opérations pour déclencher manuellement la persistance : save
et bgsave
Leur principale différence se reflète dans : le blocage ou non de l'exécution du thread principal Redis. .
L'exécution de la commande save
dans le client déclenchera la persistance de Redis, mais elle mettra également Redis dans un état de blocage jusqu'à ce que la persistance RDB soit terminée. commandes envoyées par d'autres clients, donc doit être utilisé avec prudence dans un environnement de production. La commande
save
est utilisée comme suit :
Comme le montre l'image, une fois la commande save
exécutée, la persistance file dump.rdb
L'heure de modification change, ce qui signifie save
a déclenché avec succès la persistance RDB.
save
Le processus d'exécution de la commande est tel qu'illustré dans la figure ci-dessous :
bgsave (sauvegarde en arrière-plan) est un moyen de sauvegarde en arrière-plan, la plus grande différence entre elle et la commande save
est que bgsave
fork() un processus enfant pour effectuer la persistance. Dans l'ensemble du processus, il n'y a qu'un court blocage lorsque fork() l'enfant. process.Une fois le processus enfant créé, le processus principal de Redis 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 :
bgsave
Le processus d'exécution est tel qu'indiqué dans la figure ci-dessous :
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
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éclenche automatiquement la persistance. L'essentiel est que Redis exécutera automatiquement la commande bgsave
une fois 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 :
Lorsque la valeur de la clé Redis change 10 fois dans les 60 secondes, la persistance sera déclenchée si la valeur de la clé Redis change dans les 60 secondes ; Si la valeur de la clé a changé moins de 10 fois, Redis déterminera si la valeur de la clé de Redis a été modifiée au moins une fois en 600 secondes. Si tel est le cas, la persistance sera déclenchée. La commande
flushall
est utilisée pour effacer la base de données Redis. Elle doit être utilisée avec prudence dans un environnement de production. Lorsque Redis exécute la commande flushall
, la persistance automatique sera effectuée. être déclenchés. Les fichiers RDB sont effacés.
Le résultat de l'exécution est présenté dans la figure ci-dessous :
Dans la réplication maître-esclave Redis, lorsque l'esclave Le nœud effectue une opération de réplication complète, le nœud maître exécutera la commande bgsave
et enverra le fichier RDB au nœud esclave. Ce processus déclenchera automatiquement la persistance Redis.
Définir correctement la configuration RDB peut garantir le fonctionnement efficace et stable de Redis. Jetons un coup d'œil aux éléments de configuration de RDB ?
Les paramètres de configuration RDB peuvent être trouvés dans le fichier de configuration Redis. Le contenu spécifique est le suivant :
# 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 ./
Les paramètres les plus importants sont les suivants. suit :
① paramètre de sauvegarde
Il est utilisé pour configurer les paramètres qui déclenchent les conditions de persistance RDB. Lorsque les conditions de sauvegarde sont remplies, les données seront conservées sur le disque dur.
La description de la configuration par défaut est la suivante :
② paramètre rdbcompression
La valeur par défaut est yes
ce qui signifie activer la compression des fichiers RDB, Redis utilisera l'algorithme LZF pour la compression. Si vous ne souhaitez pas consommer les performances du processeur pour la compression des fichiers, vous pouvez le configurer pour désactiver cette fonction. L'inconvénient est qu'elle nécessite plus d'espace disque pour enregistrer les fichiers.
③ Paramètre rdbchecksum
Sa valeur par défaut est yes
qui indique s'il faut activer la vérification des fichiers RDB lors de l'écriture et de la lecture de fichiers, et vérifier s'il y a des dommages s'il est détecté au démarrage. , S'il est endommagé, arrêtez de démarrer.
Vous pouvez utiliser des commandes dans Redis pour interroger les paramètres de configuration actuels. Le format de la commande de requête est : config get xxx
Par exemple, si vous souhaitez obtenir le paramètre de nom de stockage du fichier RDB, vous pouvez utiliser config get dbfilename
. L'effet d'exécution est le suivant :
.
Pour interroger le répertoire de fichiers de RDB, vous pouvez utiliser la commande config get dir
L'effet d'exécution est comme indiqué dans la figure ci-dessous :
config set dir "/usr/data"
Remarque : La méthode de modification manuelle du fichier de configuration Redis est globalement efficace, c'est-à-dire que le redémarrage des paramètres de configuration du serveur Redis ne sera pas perdu et l'utilisation de la méthode de modification de commande , redémarrez le Redis. Ensuite, il sera perdu. Cependant, si vous souhaitez modifier manuellement le fichier de configuration Redis pour qu'il prenne effet immédiatement, vous devez redémarrer le serveur Redis, mais la méthode de commande ne nécessite pas de redémarrer le serveur Redis.
Conseils : Le fichier de configuration Redis se trouve dans le chemin racine du répertoire d'installation Redis et le nom par défaut est redis.conf.
Lorsque le serveur Redis démarre, si le fichier RDB dump.rdb existe dans le répertoire racine de Redis, Redis chargera automatiquement le fichier RDB pour restaurer les données persistantes.
S'il n'y a pas de fichier dump.rdb dans le répertoire racine, veuillez d'abord déplacer le fichier dump.rdb vers le répertoire racine de Redis.
Vérifiez si le fichier RDB est chargé
Redis dispose d'informations de journal au démarrage, qui indiqueront si le fichier RDB est chargé. Nous exécutons la commande de démarrage Redis : src/redis-server redis.conf
, comme indiqué. dans la figure ci-dessous :
Comme le montre le journal, le service Redis a chargé le fichier RDB normalement au démarrage.
Conseils : pendant que le serveur Redis charge le fichier RDB, il sera bloqué jusqu'à ce que le travail de chargement soit terminé.
. La commande peut désactiver la persistance de Redis, comme le montre la figure ci-dessous : config set save ""
https://redis.io/topics/persistence
https://blog.csdn.net/ qq_36318234/article/details/79994133
https://www.cnblogs.com/ysocean/p/9114268.html
https://www.cnblogs. com/wdliu/p/9377278.html
Premiers pas avec Redis Tutorial .
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!