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's set to 'yes' as it's almost always a win. # If you want to save some CPU in the saving child set it to 'no' 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 'dbfilename' 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#快照文件存储的位置
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é
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
<. 🎜>Commande bgsaveLa 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
Avantages et inconvénients
AvantagesLes 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énientsRDB 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 sauvegardesave ""
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
Dé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
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 : //m.sbmmt.com/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!