Maison  >  Article  >  base de données  >  En savoir plus sur la méthode d'instantané (RDB) dans la persistance Redis

En savoir plus sur la méthode d'instantané (RDB) dans la persistance Redis

青灯夜游
青灯夜游avant
2020-03-31 10:23:252821parcourir

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.

En savoir plus sur la méthode d'instantané (RDB) dans la persistance Redis

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.

En savoir plus sur la méthode dinstantané (RDB) dans la 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.

1. Plusieurs méthodes de persistance

La persistance Redis a les trois méthodes suivantes :

  • Méthode Snapshot (RDB, Redis DataBase) écrit le les données de la mémoire à un moment donné sur le disque sous forme binaire ;
  • Méthode d'ajout de fichier (AOF, Append Only File) enregistre toutes les commandes d'opération et les écrit sous forme de texte Ajouter au fichier dans le form;
  • Méthode de persistance hybride, une nouvelle méthode après Redis 4.0. La persistance hybride combine les avantages de RDB et d'AOF. Lors de l'écriture, écrivez d'abord les données actuelles au début du fichier. sous forme de RDB, puis stocker les commandes d'opération ultérieures dans le fichier au format AOF. Cela 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 moment donné 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éclenchement manuel

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

① save command

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 :

En savoir plus sur la méthode dinstantané (RDB) dans la persistance Redis

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 :

En savoir plus sur la méthode dinstantané (RDB) dans la persistance Redis

② commande bgsave

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 :

En savoir plus sur la méthode dinstantané (RDB) dans la persistance Redis

bgsave Le processus d'exécution est tel qu'indiqué dans la figure ci-dessous :

En savoir plus sur la méthode dinstantané (RDB) dans la persistance Redis

2) 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é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 :

  • enregistrer 60 10
  • enregistrer 600 1

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

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 :

En savoir plus sur la méthode dinstantané (RDB) dans la persistance Redis

③ La synchronisation maître-esclave se déclenche

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.

4. Instructions de configuration

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 :

  • save 900 1 : Indique que si au moins une valeur de clé change dans les 900 secondes, les données seront conservées sur le disque dur
  • ;
  • save 300 10 : Indique que si au moins 10 valeurs clés changent dans les 300 secondes, les données seront conservées sur le disque dur
  • save 60 10000 : Indique que si au moins 10 000 valeurs clés ; ​​changez dans les 60 secondes, les données seront conservées sur le disque dur.

② 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.

5. Requête de configuration

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 :

. En savoir plus sur la méthode dinstantané (RDB) dans la persistance Redis

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 :

<.>

En savoir plus sur la méthode dinstantané (RDB) dans la persistance Redis

6. Paramètres de configuration

Définissez la configuration RDB des deux manières suivantes :

    Modifiez manuellement le fichier de configuration Redis
  • Utilisez les paramètres de ligne de commande, par exemple, utilisez
  • Pour modifier le répertoire de stockage RDB. 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.

7.Récupération du fichier RDB

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 :

En savoir plus sur la méthode dinstantané (RDB) dans la persistance Redis

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é.

8. Avantages et inconvénients de RDB

1) Avantages de RDB

  • Le contenu RDB est constitué de données binaires, prend moins de mémoire, est plus compact et est plus adapté. comme fichier de sauvegarde ;
  • 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 le serveur distant pour la récupération du service Redis
  • RDB peut améliorer Redis ; dans quelle mesure La vitesse d'exécution est due au fait 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 sur disque
  • et les fichiers AOF RDB peuvent être redémarrés plus rapidement que les fichiers au format.
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 pendant une période de du temps sera perdu. Les données Redis
  • RDB nécessitent un fork() fréquent pour les 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 l'exécuter lors de la connexion au client

. La commande peut désactiver la persistance de Redis, comme le montre la figure ci-dessous : config set save ""
En savoir plus sur la méthode dinstantané (RDB) dans la persistance Redis

10Résumé

Grâce à cet article, nous pouvons savoir que la persistance RDB est divisée en manuel. Il existe deux méthodes : le déclenchement 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 existe un risque de perte de 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.

11. Questions à réfléchir

Si l'utilisation du processeur du serveur Redis est trop élevée, quelle peut en être la cause ? Vous êtes invités à écrire vos réponses dans la zone de commentaires.

12. Références et remerciements

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

Cet article est reproduit à partir de : https://segmentfault.com/a/1190000021036574

Pour plus de connaissances sur Redis, veuillez prêter attention à Colonne

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!

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