Maison  >  Article  >  base de données  >  Cet article vous amènera à comprendre la version complète de la persistance Redis.

Cet article vous amènera à comprendre la version complète de la persistance Redis.

咔咔
咔咔original
2020-08-28 17:17:561263parcourir

Cet article explique les points de connaissances Introduction à la persévérance BDR AOF La différence entre RDB et AOF Scénarios d'application de persistance

Avant-propos

Kaka a compilé une feuille de route pour créer un guide d'entretien et s'est préparé à écrire des articles selon cette feuille de route. Plus tard, j'ai découvert que j'ajoutais des points de connaissances qui n'étaient pas complétés. J'attends également avec impatience que vos partenaires se joignent à nous pour nous aider à apporter leur aide. Rendez-vous dans la section commentaires !

Cet article vous amènera à comprendre la version complète de la persistance Redis.
Insérer la description de l'image ici

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 sont le RDB discuté ci-dessous

Le deuxième processus d'opération stocke le processus d'opération et la structure de stockage est complexe. processus d'exploitation des données, qui est l'AOF

2. 2-1 Méthode de démarrage RDB - commande save

L'image suivante est les informations de configuration de redis.conf Après avoir exécuté save, un fichier dump.rdbMaintenant, nous définissons une valeur et l'enregistrons. Il y aura un fichier dump6379.rdb sous /usr/local/redis/data.

2-2 Mode de démarrage RDB -- enregistrer la configuration associée à la commande

  • dbfilename dump6379.rdb : Définissez le nom du fichier de base de données locale, la valeur par défaut est dump.rdb
  • dir : le chemin pour stocker le fichier rdb
  • rdbcompression oui : définir le stockage sur local S'il faut compresser les données dans la base de données, la valeur par défaut est oui, en utilisant la compression lzf
  • rdbchecksum yes : définissez s'il faut traiter la vérification du format de fichier RDB. Ce processus de vérification est effectué. pendant l'écriture et la lecture de fichiers

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

Dans. En fait, cette récupération de données est comparée à d'autres relations. Il n'est fondamentalement pas nécessaire de faire quoi que ce soit pour restaurer une grande base de données. Redémarrez-le simplement

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

Cette image provient de vidéos en ligne . L'exécution de la commande save bloquera le serveur Redis actuel jusqu'à ce que le processus RDB en cours soit terminé, ce qui peut provoquer un blocage à long terme. Cette commande est essentiellement abandonnée et n'est plus utilisée pendant le processus de travail. Remplacera tout par bgsaveCet article vous amènera à comprendre la version complète de la persistance Redis.

2-5 RDB -- Comment fonctionne la commande bgsave

Cet article vous amènera à comprendre la version complète de la persistance Redis.Lorsque bgsave est exécuté dans Redis, il sera retourner directement Une sauvegarde en arrière-plan commencée

En ce moment, nous examinons le fichier journal. La commande bgsave est optimisée pour le problème de blocage de la sauvegardeCet article vous amènera à comprendre la version complète de la persistance Redis.

2-5 RDB -- Démarrage automatique du fichier de configuration
<span style="display: block; background: url(https://my-wechat.mdnice.com/point.png); height: 30px; width: 100%; background-size: 40px; background-repeat: no-repeat; background-color: #272822; margin-bottom: -7px; border-radius: 5px; background-position: 10px 10px;"></span><code class="hljs" style="overflow-x: auto; padding: 16px; color: #ddd; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; letter-spacing: 0px; padding-top: 15px; background: #272822; border-radius: 5px;"><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">save</span> 900 1<br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">save</span> 300 10<br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">save</span> 60 10000<br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">stop-writes-on-bgsave-error</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">yes</span><br/></code>

enregistrer [Heure] [Nombre de modifications clés] Cet article vous amènera à comprendre la version complète de la persistance Redis.

C'est à dire disons, il y en a 10 en 300 secondes. Si la valeur de la clé change, bgsave

sera exécuté en arrière-plan.

3. AOF

Concept AOF 3-1

Persistance AOF : enregistrez chaque commande d'écriture dans un journal indépendant et réexécutez les commandes dans le fichier AOF lors du redémarrage pour réaliser la récupération des données. Par rapport au RDB, il peut être simplement décrit comme le processus d'enregistrement de la génération de données

Le rôle principal d'AOF est de résoudre la nature en temps réel de la persistance des données, et c'est actuellement la méthode principale de persistance Redis

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

Cet article vous amènera à comprendre la version complète de la persistance Redis.Exécuter une commande redis

Redis ' AOF rafraîchira la zone tampon de commande

puis la synchronisera avec le fichier .aof configuré dans redis.conf selon une certaine stratégie

3-3 Trois stratégies pour l'écriture des données AOF

  • toujours : chaque opération d'écriture est synchronisée avec le fichier AOF, avec zéro erreur de données et de faibles performances. Il n'est pas recommandé d'utiliser
  • everysec : synchronisez les instructions dans le tampon avec le fichier AOF toutes les secondes, et la précision des données est. une configuration relativement faible, avec des performances plus élevées, est recommandée et constitue également 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, la valeur par défaut n'est pas activée
  • Configuration : appendfsync always| everysec | no
  • Fonction : stratégie de données d'écriture AOF
  • Configuration : appendfilename filename
  • Fonction : nom de fichier persistant AOF, le nom par défaut est appendonly.aof

Cet article vous amènera à comprendre la version complète de la persistance Redis. Ensuite, redémarrez le service redis et vous pourrez voir le fichier appendonly.aof dans le répertoire usr/local/redis/data Cet article vous amènera à comprendre la version complète de la persistance Redis. Ensuite, nous Le client Redis exécute une commande, vérifions-la. Vous pouvez voir que les données seront stockées dans le fichier appendonly.aof. Cet article vous amènera à comprendre la version complète de la 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, ouvrez le fichier appendonly.aof pour le voir, vous pouvez voir qu'il y a trois opérations, mais ces trois opérations sont toutes modifiées par une seule touche ! Ne pouvons-nous pas sauvegarder uniquement la dernière clé ? Avec cette question, nous continuons à regarder vers le bas Cet article vous amènera à comprendre la version complète de la persistance Redis.

3-6 réécriture AOF

À mesure que les commandes continuent pour être écrit sur AOF, le fichier deviendra de plus en plus gros. Afin de résoudre ce problème, redis introduit le mécanisme de réécriture AOF pour compresser la taille du fichier. La réécriture de fichiers AOF est le processus de conversion des données du processus Redis en commandes d'écriture et de leur synchronisation avec le nouveau fichier AOF. En termes simples, il convertit les résultats d'exécution de plusieurs commandes sur les mêmes données en enregistrements d'exécution d'instructions correspondant aux données du résultat final.

Par exemple, ci-dessus, nous avons exécuté la commande set name trois fois, mais au final nous n'avons besoin que des données de la dernière exécution. Autrement dit, nous n'avons besoin que du dernier enregistrement d'exécution.

3-7 Fonction de réécriture AOF

  • Réduire l'utilisation du disque et améliorer l'utilisation du disque
  • Améliorez l'efficacité de la persistance, réduisez le temps d'écriture de la persistance et améliorez les performances des E/S
  • Réduisez le temps de récupération des données et améliorez l'efficacité de la récupération des données

3-8 règles de réécriture AOF

  • Le processus a expiré Les données ne sont plus écrites au fichier
  • Ignorez les instructions non valides et utilisez les données en cours pour générer directement lors de la réécriture, afin que la nouvelle valeur du fichier AOF conserve la commande finale d'écriture des données. Comme del instruction, hdel,srem. Définissez une valeur clé plusieurs fois, etc.
  • Plusieurs commandes d'écriture pour les mêmes données sont fusionnées en une seule commande : comme lpush list a lpush lsit b lpush list c peut être convertie en lpush list a b c.Cependant, afin d'éviter un débordement de tampon client provoqué par un volume de données excessif, chaque instruction de type list,set,hash,zset peut écrire jusqu'à 64 éléments

3 -9 Réécriture manuelle AOF

commande : bgrewriteaof

Suite à notre question 3-5, on exécute la commande bgrewriteaof sur la ligne de commande et on vérifie appendonly .aof file

Après l'exécution, vous constaterez que le fichier devient plus petit et qu'il n'y a qu'une seule instruction dans le fichier

Cet article vous amènera à comprendre la version complète de la persistance Redis.
Insérer la description de l'image ici

3-10 Comment fonctionne la réécriture manuelle AOF

Cet article vous amènera à comprendre la version complète de la persistance Redis.
Insérer la description de l'image ici

3-11 Réécriture automatique 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 64mb commencera la réécriture

Cette photo provient d'Internet

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

Cet article vous amènera à comprendre la version complète de la persistance Redis.Cet article vous amènera à comprendre la version complète de la persistance Redis.

4. La différence entre RDB et AOF

  • est très sensible aux données, il est recommandé de utilisez la solution de persistance AOF par défaut

    • La stratégie de persistance AOF utilise chaque seconde, fsync-times par seconde • Cette stratégie Redis peut toujours maintenir de bonnes performances de traitement, lorsqu'un problème survient, jusqu'à 0- sera être perdu des données en 1 seconde.
    • Remarque : en raison de la grande taille de stockage des fichiers AO et de la lenteur de la vitesse de récupération
  • Validité de l'étape de présentation des données, il est recommandé d'utiliser la solution de persistance RDB

    • Les données peuvent être bien conservées sans perte pendant l'étape (cette étape est destinée aux développeurs pour fonctionner et entretenir manuellement), et la vitesse de récupération est plus rapide. La récupération des données au point d'étape utilise généralement la solution RDB
    • Remarque : l'utilisation de RDB pour obtenir une persistance stricte des données entraînera Redis à baisse très faible
  • Comparaison complète

    • Le choix entre RDB et AOF est en fait un compromis, chacun a des avantages et des inconvénients
    • Si vous ne pouvez pas supporter la perte de données en quelques minutes , très sensible aux données de l'industrie, choisissez A0F
    • Si vous pouvez résister à la perte de données en quelques minutes, si vous recherchez la vitesse de récupération de grands ensembles de données, choisissez RDB
      .
    • La reprise après sinistre utilise RDB
    • Stratégie de double assurance, activer RDB et AOF en même temps Après le redémarrage, Redis donne la priorité à l'utilisation d'A0F pour récupérer les données. , réduisant la quantité de données perdues

    La persévérance dans l'apprentissage, la persévérance dans les blogs et la persévérance dans le partage sont les convictions que Kaka a toujours soutenues depuis sa carrière. J'espère que les articles de Kaka pourront être vus sur l'immense Internet. Vous apportant un peu d'aide. Rendez-vous dans le prochain numéro 》

    .

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