Maison > Article > base de données > Comment Redis implémente la solution de persistance (utilisée par RDB et AOF)
1. Le rôle de la persistance
1. Qu'est-ce que la persistance
Toutes les données enregistrées par redis In mémoire, les mises à jour des données seront enregistrées de manière asynchrone sur le disque dur
2. Comment implémenter la persistance
Snapshot : un achèvement des données à un certain moment Sauvegarde - Dump de mysql - Log d'écriture RDB de redis : toute opération est enregistrée dans le log Pour restaurer les données, il suffit de parcourir à nouveau le log - Binlog de mysql - HLog de Hhase - AOF de Redis
2. RDB
1. Qu'est-ce que RDB
2. - Principalement trois méthodes
La première : save (synchronisation)
1 Le client entre la commande save----"redis server----"Création synchronisée du binaire RDB le fichier
2 provoquera le blocage de Redis (lorsque la quantité de données est très importante)
3 Stratégie de fichier : Si l'ancien RDB existe, il remplacera l'ancien
4 Complexité o(n)
Deuxième type : bgsave (asynchrone, sauvegarde Backgroud démarrée)
1 Le client entre la commande de sauvegarde ----"redis server----"asynchronous Create un fichier binaire RDB (la fonction fork génère un processus enfant (fork bloquera reids), exécutez createRDB, si l'exécution réussit, revenez au message reids)
2 Lors de l'accès à redis à ce moment, le client va répondre normalement
3 Stratégie de fichiers : Identique à la sauvegarde, si l'ancien RDB existe, il remplacera l'ancien
4 Complexité o(n)
La troisième méthode : (méthode courante) (** ****) Automatiquement (via le fichier de configuration)
Configurer les modifications en secondes
save 900 1save 300 10save 60 10000 Si 1w éléments de données sont modifiés en 60s, générer automatiquement rdb
Si 10 éléments de données sont modifiés en 300 s, générez automatiquement rdb
Si 1 élément de données est modifié en 900 s, générez automatiquement rdb
Si l'une des trois conditions ci-dessus est remplie, le rdb sera automatiquement généré et bgsave
#Configuration : enregistrer 900 1 #Configurer un enregistrer 300 10 #Configurer unSi vous souhaitez enregistrer des données sans importance, vous pouvez utiliser RDB (comme les données du cache). Si vous souhaitez enregistrer des données très importantes, vous devez utiliser AOF, mais les deux méthodes peuvent également être utilisées. en même temps.save 60 10000 #Configurez-en un dbfilename dump.rdb #Le nom du fichier rdb, la valeur par défaut est dump.rdbdir ./ #Le fichier rdb existe dans le répertoire actuel répertoire stop-writes-on-bgsave-error yes #Si une erreur se produit dans bgsave, s'il faut arrêter l'écriture, la valeur par défaut est ouirdbcompression yes #Utiliser le format de compressionrdbchecksum oui #Somme de contrôle du fichier rdb#Meilleure configurationenregistrer 900 1
enregistrer 300 10
save 60 10000 dbfilename dump-${port}.rdb
#With port Comme nom de fichier, il peut y avoir plusieurs reids sur une machine, donc ce ne sera pas déroutant
dir /bigdiskpath #Mettez le chemin de sauvegarde vers un grand répertoire d'emplacement du disque dur
stop-writes-on-bgsave-error yes
# Arrêtez-vous lorsqu'une erreur se produit
rdbcompression yes #Compression
rdbchecksum yes #Verification
Le mécanisme de déclenchement RDB utilise généralement la première. Il existe trois manières, mais cette méthode présente également des inconvénients. Si le nombre d'éléments modifiés n'est pas dans la plage définie, il ne sera pas déclenché, ce qui empêchera la conservation d'un grand nombre de données. On utilise donc généralement la méthode suivante : AOF.
3. AOF
1. Problème RDB
Cela prend du temps et des performances. Incontrôlable, les données peuvent être perdues.
2. Introduction à l'AOF
Chaque fois qu'une commande est écrite par le client, un journal est enregistré et placé dans le fichier journal. En cas de temps d'arrêt, les données peuvent être. complètement restauré
3. Trois stratégies d'AOF
Le journal n'est pas écrit directement sur le disque dur, mais est d'abord placé dans le tampon Le tampon est écrit sur le disque dur. selon certaines stratégies
#Premier type : toujours : redis--》Ecrire le tampon de rafraîchissement de la commande---》Fsync chaque commande sur le disque dur---》Fichier AOF
#Deuxième type : everysec (valeur par défaut) : redis——》Écrire le tampon rafraîchi par la commande---》fsync le tampon sur le disque dur toutes les secondes--》Fichier AOF
#Le troisième type : no:redis ——》Écrivez la commande de rafraîchissement Buffer ---》Décidé par le système d'exploitation, fsync le tampon sur le disque dur--》Fichier AOF
命令 | always | everysec | no |
优点 | 不丢失数据 |
每秒一次fsync,丢失1秒数据 | 不用管 |
缺点 |
IO开销大,一般的sata盘只有几百TPS | 丢1秒数据 | 不可控 |
4. Réécriture AOF
Au fur et à mesure que les commandes sont écrites et que le nombre de concurrence augmente, le fichier AOF deviendra de plus en plus gros. Ce problème peut être résolu par la réécriture AOF
原生AOF | AOF重写 |
set hello world set hello java set hello hehe incr counter ncr counter rpush mylist a rpush mylist b rpush mylist c 过期数据 |
set hello hehe set counter 2 rpush mylist a b c |
set bonjour java
set bonjour hehe
incr counter
ncr counter
rpush mylist a
rpush mylist b
rpush mylist c
Données expirées
définir le compteur 2
命令 | rdb | aof |
启动优先级 | 低 |
高(挂掉重启,会加载aof的数据) |
体积 | 小 |
大 |
恢复速度 |
快 | 慢 |
数据安全性 |
丢数据 |
根据策略决定 |
轻重 |
重 |
轻 |
Command | rdb | aof |
Priorité de démarrage td> | Faible | Élevé (si vous raccrochez et redémarrez, les données aof seront chargées) |
Taille | Petit | 大|
Vitesse de récupération | Rapide | Lent |
Sécurité des données | Données perdues | Décidé selon la stratégie |
Gravité | Lourd | Léger |
Meilleure stratégie 2.rdb
Rdb est désactivé, le fonctionnement maître-esclave est utilisé
Gestion centralisée : sauvegarde des données par jour, toutes les heures
Configuration maître-esclave, le nœud esclave est activé
3.aof meilleure stratégie
Activé : cache et stockage, ouverts dans la plupart des cas,
aof réécriture de la gestion centralisée
chaque seconde : stratégie actualisée toutes les secondes
4. Meilleure stratégie
Petit sharding : la mémoire maximale de chaque redis est de 4g
Cache ou stockage : utilisez différentes stratégies selon les caractéristiques
Surveillez le disque dur à tout moment , Mémoire, réseau de charge, etc.
Avoir suffisamment de mémoire
Ce qui précède est tout le contenu de Redis (4) - solution de persistance (utilisée par RDB et AOF).
Références associées : Site Web PHP chinois
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!