Maison  >  Article  >  base de données  >  Version complète de persistance Redis

Version complète de persistance Redis

咔咔
咔咔original
2020-05-27 11:04:391736parcourir


Introduction à la persistance

RDB

AOF

La différence entre RDB et AOF

Scénarios d'application de persistance


Pour la fonction de persistance, c'est en fait très simple et pas si compliqué


Environnement de démonstration


centos7.0

redis4.0

répertoire de stockage redis : /usr/local/ redis

répertoire de stockage redis.conf : /usr/local/redis/data


1. Introduction à la persistance


Toutes les données de Redis sont stockées en mémoire. Si Redis plante, les données seront perdues. La persistance Redis consiste à enregistrer les données sur le disque. Le mécanisme de travail qui utilise un support de stockage permanent pour sauvegarder les processus de données et restaurer les données enregistrées à un moment précis est appelé persistance.


Qu'est-ce qui est enregistré dans le processus de persistance ?


Le premier formulaire d'instantané stocke les résultats des données et se concentre sur les données, qui est le RDB


qui sera discuté ci-dessous

Le deuxième type de processus d'exploitation, le processus d'opération de stockage, se concentre sur le processus d'exploitation des données, qui est l'AOF


2. ci-dessous


2-1 Méthode de démarrage RDB -- commande de sauvegarde


L'image suivante est les informations de configuration de redis.conf. Après exécution Après l'enregistrement, un fichier dump.rdb sera généré

Version complète de persistance Redis

Maintenant, nous définissons une valeur, puis nous l'enregistrons, dans /usr/local/ redis/data Il y aura un fichier dump6379.rdb

Version complète de persistance Redis


2-2 Comment utiliser la sauvegarde RDB


  • dbfilename dump6379.rdb : définissez le nom du fichier RDB, la valeur par défaut est dump.rdb
  • dir : le chemin pour stocker le fichier rdb ou aof
  • rdbcompression yes : définissez s'il faut compresser les données lors du stockage, la valeur par défaut est oui, en utilisant la compression lzf
  • rdbchecksum yes : définissez s'il faut effectuer une vérification du format de fichier RDB. Ce processus de vérification est effectué à la fois lors de l'écriture et de la lecture des fichiers
<.>


2-3 Récupération de données RDB


En fait, comparée à d'autres récupérations de bases de données relationnelles, cette récupération de données ne nécessite pratiquement aucune opération. Redémarrez-le simplement


2-4 RDB -- Comment fonctionne la commande de sauvegarde


Lorsque vous exécutez la sauvegarde, les instructions d'autres clients demandant Redis attendront que l'instruction de sauvegarde soit terminée. Étant donné que l'instruction de sauvegarde est exécutée dans un seul thread, une fois que le temps d'exécution est trop long, les autres utilisateurs ne pourront directement pas stocker les données normalement. Cette commande est donc abandonnée par défaut. Le bgsave introduit ci-dessous sera utilisé à la place de


2-5 RDB -- Comment fonctionne la commande bgsave


Version complète de persistance Redis

Lorsque bgsave est exécuté dans Redis Renvoie directement une sauvegarde en arrière-plan démarrée


À ce stade, nous examinons le fichier journal. La commande bgsave est optimisée pour le problème de blocage de la sauvegarde

<.> Version complète de persistance Redis


2-5 RDB -- Démarrage automatique du fichier de configuration


以下配置是默认配置
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes


Version complète de persistance Redis

enregistrer [Temps] [Quantité de changement de clé]


En d'autres termes, si 10 valeurs clés changent en 300 secondes, bgsave sera exécuté en arrière-plan


AOF


.

3-1 Concept AOF

Les fichiers AOF stockent le processus d'exécution des opérations de commande, et la récupération des données est également restaurée à l'aide du processus d'opération.


3-2 Processus d'écriture des données AOF


Version complète de persistance Redis

Exécuter une commande redis


l'AOF de redis actualisera le tampon de commande


Synchronisez-le ensuite avec le fichier .aof configuré dans redis.conf selon une certaine méthode


3-3 AOF écriture de données Trois stratégies


  • toujours : les commandes exécutées seront stockées dans des fichiers AOF, avec zéro erreur de données et de faibles performances. Il n'est pas recommandé d'utiliser
  • . Everysec : synchronise les instructions du tampon avec le fichier AOF toutes les secondes. Il offre une précision des données plus élevée et des performances plus élevées. Il s'agit également de la configuration par défaut. Cependant, si le système s'arrête soudainement, les données seront perdues en 1 seconde
  • non : le système d'exploitation contrôle le cycle de chaque synchronisation avec le fichier AOF, et le processus global est incontrôlable



3-4 Fonction AOF activée


  • Configuration : appendonly yes|no
  • Fonction : S'il faut activer la fonction de persistance AOF, qui n'est pas activée par défaut
  • Configuration : appendfsync always| everysec | no
  • Fonction : stratégie de données d'écriture AOF
  • Configuration : appenfilename filename
  • Fonction : nom de fichier persistant AOF, le nom par défaut est appendonly.aof


Version complète de persistance Redis

Ensuite, redémarrez le service Redis et vous pourrez voir le fichier appendonly.aof dans le répertoire usr/local/redis/data

Version complète de persistance Redis

Ensuite, nous exécutons une commande sur le client Redis et la vérifions. Vous pouvez voir que les données seront stockées dans le fichier appendonly.aof.

Version complète de persistance Redis


3-5 Problèmes avec l'écriture des données AOF


Regardons d'abord un cas. Après avoir défini à plusieurs reprises la clé de nom, nous avons ouvert le fichier appendonly.aof pour le visualiser. Nous pouvons voir qu'il y a trois opérations, mais ces trois opérations sont toutes modifiées par une seule clé ! Ne pouvons-nous pas sauvegarder uniquement la dernière clé ? Avec cette question, nous continuons à regarder vers le bas

Version complète de persistance Redis


Réécriture 3-6 AOF


Par exemple, ci-dessus, nous avons exécuté la commande set name trois fois, mais au final nous n'avons besoin que de l'enregistrement de la dernière exécution. Autrement dit, nous n'avons besoin que du dernier enregistrement d'exécution. D'autres enregistrements ne sont pas nécessaires et les données compressées seront réécrites dans le fichier aof.


Notre utilisation du disque s'est améliorée après la réécriture

De plus, la vitesse de récupération des données sera plus rapide

Dans le même temps, l'efficacité de la persistance sera également améliorée


3-7 Règles de réécriture AOF


  • Les données qui ont expiré au cours du processus ne seront plus écrites dans le fichier
  • Ignorer les instructions de suppression, telles que del , hdel,srem. Il y a aussi le problème mentionné en 3-5. Les opérations continues sur une clé
  • fusionnent plusieurs enregistrements d'écriture des mêmes données en un seul enregistrement : par exemple, lpush list a lpush lsit b lpush list c peut être converti en lpush list a b c.


3-8 Réécriture manuelle AOF


Commande : bgrewriteaof


Suite à nos questions 3 à 5, nous exécutons la commande bgrewriteaof sur la ligne de commande puis visualisons le fichier appendonly.aof


Lorsque le l'exécution est terminée Vous constaterez que le fichier est devenu plus petit et qu'il n'y a qu'une seule instruction dans le fichier


Version complète de persistance Redis


3-9 Principe de fonctionnement de la réécriture manuelle AOF


Version complète de persistance Redis


Réécriture automatique 3-10 AOF


Configuration :auto-aof-rewrite-percentage 100 | auto-aof-rewrite-min-size 64mb

Paramètres de comparaison du déclencheur : aof_current_size | aof_base_size


Quand aof_current_size > auto-aof-rewrite-min-size 64 Mo commencera à réécrire


Cette image provient d'Internet

Version complète de persistance Redis


3-11 Workflow AOF et flux de réécriture = processus


Version complète de persistance Redis

Version complète de persistance Redis


4. Résumé


Ce qui précède concerne la persistance de Redis.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn