Maison  >  Article  >  base de données  >  Méthodes et principes des instantanés de persistance Redis

Méthodes et principes des instantanés de persistance Redis

尚
avant
2020-03-19 09:44:282709parcourir

Méthodes et principes des instantanés de persistance Redis

La soi-disant persistance vise à empêcher la perte de nos données, et les données sont généralement enregistrées sur notre disque dur. Il existe deux méthodes de persistance dans Redis, l'une est la persistance des instantanés et l'autre est la persistance AOF. Chacune a ses propres avantages et inconvénients. Dans le projet, nous devons choisir la méthode de persistance spécifique en fonction de la situation réelle.

Recommandé : Tutoriel d'introduction à Redis

Persistance des instantanés (RDB)

Elle est également appelée méthode de persistance RDB, qui est via La persistance est obtenue en prenant des instantanés, en stockant les données de mémoire à un certain moment dans un fichier rdb et en chargeant les données dans le fichier lorsque le service Redis est redémarré

Configuration des instantanés persistants

La persistance des instantanés dans Redis est activée par défaut et il existe des options de configuration associées dans le fichier de configuration redis.conf

################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#
#   Note: you can disable saving completely by commenting out all "save" lines.
#
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#
#   save ""

save 900 1   #900秒内至少有1个key被更改就执行快照
save 300 10  #300内描述至少有10个key被更改就执行快照
save 60 10000  #60秒内至少有10000个key被更改就执行快照

# By default Redis will stop accepting writes if RDB snapshots are enabled
# (at least one save point) and the latest background save failed.
# This will make the user aware (in a hard way) that data is not persisting
# on disk properly, otherwise chances are that no one will notice and some
# disaster will happen.
#
# If the background saving process will start working again Redis will
# automatically allow writes again.
#
# However if you have setup your proper monitoring of the Redis server
# and persistence, you may want to disable this feature so that Redis will
# continue to work as usual even if there are problems with disk,
# permissions, and so forth.
stop-writes-on-bgsave-error yes #拍摄快照失败是否继续执行写命令

# Compress string objects using LZF when dump .rdb databases?
# For default that&#39;s set to &#39;yes&#39; as it&#39;s almost always a win.
# If you want to save some CPU in the saving child set it to &#39;no&#39; but
# the dataset will likely be bigger if you have compressible values or keys.
rdbcompression yes #是否对快照文件进行压缩

# Since version 5 of RDB a CRC64 checksum is placed at the end of the file.
# This makes the format more resistant to corruption but there is a performance
# hit to pay (around 10%) when saving and loading RDB files, so you can disable it
# for maximum performances.
#
# RDB files created with checksum disabled have a checksum of zero that will
# tell the loading code to skip the check.
rdbchecksum yes #是否进行数据校验

# The filename where to dump the DB
dbfilename dump.rdb #快照文件存储的名称
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the &#39;dbfilename&#39; configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /opt/redis-5.0.3#快照文件存储的位置

Méthodes et principes des instantanés de persistance Redis

Vérifiez l'effet

1. Entrez dans le répertoire d'installation et supprimez le fichier dump.db s'il y en a un

2. Démarrez redis, puis ajoutez quelques données, puis fermez redis et quittez

[root@root redis-5.0.3]# src/redis-cli 
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name aaa
OK
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> incr age
(integer) 19
127.0.0.1:6379> shutdown
not connected> exit
.

3. Un fichier dump.rdb est généré dans notre répertoire d'installation. Il s'agit de notre fichier de sauvegarde d'instantané

Méthodes et principes des instantanés de persistance Redis

4. Démarrez à nouveau Redis et entrez pour trouver l'original. les données sont toujours là car Redis charge les données dans le fichier de sauvegarde au démarrage.

[root@root redis-5.0.3]# src/redis-server redis.conf 
1211:C 13 Feb 2019 01:27:22.668 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1211:C 13 Feb 2019 01:27:22.668 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=1211, just started
1211:C 13 Feb 2019 01:27:22.668 # Configuration loaded
[root@root redis-5.0.3]# src/redis-cli 
127.0.0.1:6379> ping 
PONG
127.0.0.1:6379> get name
"aaa"
127.0.0.1:6379> get age
"19"
127.0.0.1:6379> keys *
1) "name"
2) "age"

5. Fermez et quittez

Supprimez le fichier dump.rdb après la fermeture et la sortie. Après le démarrage, il s'avère que les données ont disparu

[root@root redis-5.0.3]# src/redis-server redis.conf 
1218:C 13 Feb 2019 01:29:01.336 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1218:C 13 Feb 2019 01:29:01.336 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=1218, just started
1218:C 13 Feb 2019 01:29:01.336 # Configuration loaded
[root@root redis-5.0.3]# src/redis-cli 
127.0.0.1:6379> ping 
PONG
127.0.0.1:6379> keys *
(empty list or set)

. Principe de persistance des instantanés

commande save :

Pendant que Redis est en cours d'exécution, nous pouvons explicitement envoyer une commande save pour prendre un instantané. La commande save est une commande bloquante, c'est-à-dire que lorsque le serveur reçoit une commande save, il commencera à prendre des instantanés. Pendant cette période, il ne traitera pas les autres requêtes jusqu'à ce que la sauvegarde soit terminée

<.>

Méthodes et principes des instantanés de persistance Redis

Commande bgsave

La commande bgsave prend également un instantané immédiatement. Différente de la commande save, bgsave n'est pas une commande bloquante, mais crée un sous-thread, puis. ce sous-thread est responsable de l'opération de sauvegarde. Le processus parent continue de traiter la demande du client afin qu'elle ne provoque pas de blocage.

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> bgsave
Background saving started

4. Commande d'arrêt

Quand on veut juste arrêter la commande. Le serveur enverra automatiquement une commande de sauvegarde pour terminer l'opération d'instantané. Et arrêtez le serveur après avoir terminé l’opération de sauvegarde. Par conséquent, lorsque nos opérations ne répondent pas aux trois situations précédentes, après avoir arrêté le serveur, nos données ne seront pas perdues lorsque nous l'ouvrirons à nouveau.

5. Commande de synchronisation

Dans un environnement maître-esclave, le nœud esclave enverra une commande de synchronisation pour développer une réplication lorsqu'il souhaite synchroniser les données du nœud maître. À ce moment-là, le nœud maître enverra une commande bgsave pour créer un nouveau thread afin de terminer l'instantané et enverra le fichier d'instantané au nœud esclave une fois l'opération de commande bgsave terminée pour terminer la synchronisation des données des nœuds maître et esclave.

Avantages et inconvénients

Avantages

Les fichiers RDB enregistrent les données Redis à un moment donné et conviennent à la sauvegarde. Vous pouvez définir un point. au fil du temps, les fichiers RDB sont archivés afin que les données puissent être facilement restaurées vers une version différente en cas de besoin. RDB est très approprié pour la reprise après sinistre. Un seul fichier peut être facilement transféré vers un serveur distant. Lorsque la quantité de données est relativement importante, RDB démarre rapidement.

Inconvénients

RDB peut facilement entraîner une perte de données s'il est configuré pour enregistrer toutes les 3 minutes, si Redis ne peut pas fonctionner correctement pour certains. raison, alors les données entre le dernier instantané et le problème avec Redis seront perdues.

Comment désactiver la persistance des instantanés

1. Commentez toutes les configurations de sauvegarde dans le fichier de configuration redis.conf 2. Ajoutez la commande eat à la dernière configuration de sauvegarde

save ""

Persistance AOF

Différente de la persistance des instantanés en enregistrant directement les données de la paire clé-valeur Redis, la persistance AOF enregistre les données de la mémoire Redis en enregistrant les commandes d'écriture exécutées par Redis. Théoriquement, tant que nous enregistrons toutes les commandes susceptibles de modifier les données de la mémoire Redis (c'est-à-dire les commandes d'écriture), alors sur la base de ces commandes d'écriture enregistrées, nous pouvons restaurer l'état de la mémoire de Redis. La persistance AOF utilise ce principe pour obtenir la persistance et la récupération des données

Activer AOF

Dans Redis, aof est désactivé par défaut Nous devons modifier le fichier de configuration pour activer aof

appendonly yes
appendfilename "appendonly.aof"
# If unsure, use "everysec".
# appendfsync always
appendfsync everysec
# appendfsync no
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
Méthodes et principes des instantanés de persistance Redis

Méthodes et principes des instantanés de persistance RedisDésactiver la persistance des instantanés

save ""
#save 900 1
#save 300 10
#save 60 10000

Vérifier et redémarrer le service

En exécutant une simple opération de commande, nous pouvons voir que le contenu stocké dans le fichier append.aof est la commande que nous avons exécutée

Méthodes et principes des instantanés de persistance Redis

Méthodes et principes des instantanés de persistance Redis

Méthodes et principes des instantanés de persistance Redis

Remarques sur la sauvegarde persistante AOF

1.appendfsync a trois valeurs, à savoir Everysec, Always et No. Ici, nous vous recommandons d'utiliser Everysec , Always est. pas recommandé. Parce que cela affectera toujours sérieusement les performances du serveur. 2. Dans le pire des cas, chaque seconde ne perdra qu'une seconde de données et l'impact est dans une plage contrôlable.

Avantages et inconvénients

Avantages

La méthode de persistance AOF fournit une variété de fréquences de synchronisation Même si la fréquence de synchronisation par défaut est utilisée pour synchroniser une fois par seconde, Redis perdra. au plus Juste 1 seconde de données. Le format des fichiers AOF est hautement lisible, ce qui offre également aux utilisateurs une méthode de traitement plus flexible. Par exemple, si nous utilisons accidentellement la commande FLUSHALL par erreur, avant que la réécriture ne soit en cours, nous pouvons supprimer manuellement la dernière commande FLUSHALL puis utiliser AOF pour récupérer les données.

Inconvénients

Bien qu'AOF fournisse plusieurs fréquences de synchronisation, par défaut, la fréquence de synchronisation une fois par seconde a également des performances plus élevées. Mais lorsque la charge de Redis est élevée, RDB a une meilleure garantie de performances qu'AOF. RDB utilise des instantanés pour conserver l'intégralité des données Redis, tandis qu'AOF ajoute uniquement chaque commande exécutée au fichier AOF, donc en théorie, RDB est plus robuste que la méthode AOF

Persistance Quelques suggestions d'utilisation

1. Si redis est utilisé uniquement comme serveur de cache, nous ne pouvons utiliser aucune persistance.

2. Dans des circonstances normales, nous activerons les deux méthodes de persistance. redis charge d'abord les fichiers AOF pour répondre aux données. L'avantage de RDB est qu'il est rapide.

3. Dans le nœud maître-esclave, RDB sert de sauvegarde de nos données et n'est démarré que sur le salve (nœud esclave). Le temps de synchronisation peut être réglé plus longtemps, ne laissant que (enregistrer 900 1) cette règle. . C'est ça.

Recommandations associées :

Tutoriel vidéo MySQL : https://www.php.cn/course/list/51.html

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