编程知识 cdmana.com

Redis Technology Topic Series vous aide à comprendre les principes de la technologie rdb du Bas (Basic)

Une phrase par jour

L'inclinaison est une capacité,Ce n'est pas une infériorité,Ni timide,C'est une transmutation consciente.Parfois,Baisse un peu la tête,Ou peut - être que notre vie sera meilleure. 

Résumé des prémisses

RedisC'est une clé-Valeur(K-V)Service de base de données de mémoire pour,Contient généralement n'importe quelle base de données non vide.Et chaque base de données de clés non vides peut contenir n'importe quoiK-V,La structure de base est la suivante:

  • RedisUne grande partie de la forte performance de est due au fait qu'il stocke toutes les données en mémoire,Pour faireRedis.Il est toujours garanti que les données ne seront pas perdues après le redémarrage,Besoin de synchroniser les données de la mémoire vers le disque dur d'une manière ou d'une autre,Ce processus est persistant.

  • Nous savons queredisLes données mises en cache sont stockées en mémoire,En cas de panne de service,Perte de données en mémoire,Il faut donc un système de persistance des données,Oui.redisDonnées en mémoire,Écrire sur le disque,QuandredisAprès redémarrage,Récupère les données du disque.

RedisStructure du serveur

  • Il y a un problème.,Parce queRedisC'est une base de données de mémoire,S'il stocke les données directement en mémoire,Mais si l'on ne tient pas compte de la persistance des données stockées en mémoire sur le disque dur,Une fois le processus serveur terminé,Les données de la base de données disparaîtront.

  • Il existe deux principaux mécanismes de persistance des bases de données,L'un estRDBMécanismes,L'autre estAOFMécanismes,AOFLe mécanisme a déjà été décrit dans l'article précédent,

  • Si vous êtes intéressé, allez voir,Et cet article parle principalement deRDBMécanismes.

RDBMode de persistance

RDBLa persistance est définie comme le fait deredisUn instantané de l'ensemble de données en mémoire est écrit sur le disque,Le principe de réalisation estredisLe Service commence par un intervalle de temps spécifiéforkUn sous - processus,Écrire un ensemble de données dans un fichier temporaire par un sous - processus,Après une écriture réussie,Remplacer les fichiers précédents,Stockage par compression binaire,Générerdump.rdbLes fichiers sont stockés sur disque.

RDBMécanismes

  • RedisOffreRDBCapacité de persistance,Cette fonction peutRedisL'état de la base de données en mémoire reste sur le disque,Éviter la perte accidentelle de données.

  • RDBLe mécanisme de persistance peut être exécuté manuellement,Vous pouvez également sélectionner des actions périodiques en fonction de la configuration du serveur,.Cette fonction permet d'enregistrer un instantané des données à un moment donné dans unRDBDans le document.

RDBAvantages

  • Une fois cette méthode adoptée,Alors tout tonRedisLa base de données ne contiendra qu'un seul fichier,C'est parfait pour les sauvegardes de fichiers.Par exemple,,Vous avez peut - être l'intention d'archiver toutes les heures les plus récentes24Données horaires,Et aussi une fois par jour pour archiver le plus récent30Données pour les jours.Avec une telle stratégie de sauvegarde,En cas de défaillance catastrophique du système,Nous pouvons récupérer très facilement.

  • Pour la reprise après sinistre,RDBC'est un très bon choix.Parce que nous pouvons facilement compresser un seul fichier et le transférer sur un autre support de stockage.

  • Maximiser les performances.PourRedisPour le processus de service,Au début de la persistance,Tout ce qu'il faut, c'estforkProcessus enfant sortant,Ces travaux de persistance sont ensuite effectués par le Sous - processus,Cela évite grandement l'exécution du processus de serviceIOC'est parti..

  • Par rapport àAOFMécanismes,Si l'ensemble de données est grand,RDBL'efficacité de démarrage de.

RDBDésavantages

  • Si vous souhaitez garantir une disponibilité élevée des données,C'est - à - dire éviter au maximum la perte de données,AlorsRDBCe ne sera pas un bon choix.Parce qu'une fois que le système s'arrête avant la persistance programmée,Les données qui n'ont pas pu être écrites sur le disque avant seront perdues.

  • Parce queRDBC'est parforkSous - processus pour aider à la persistance des données,Donc,,Si l'ensemble de données est plus grand,Cela pourrait entraîner l'arrêt du service sur l'ensemble du serveur pendant des centaines de millisecondes,Même si1Secondes.

RDBRègles de configuration

InredisDe6379.confDans le profil:

Paramètres de configuration de sauvegarde

save <seconds> <changes>

save <Préciser l'intervalle de temps> <Effectuer l'opération de mise à jour du nombre spécifié de fois>,Si les conditions sont remplies, synchronisez les données en mémoire sur votre disque dur.La configuration officielle de l'usine par défaut est 900En quelques secondes.1Changements,300En quelques secondes.10Changements et60En quelques secondes.10000Changements,Écrit un instantané des données en mémoire sur le disque.

save 900 1      #In900Secondes(15Minutes)Après,Si au moins unkeyChangement,EtdumpSnapshots de mémoire
save 300 10     #In300Secondes(15Minutes)Après,Si au moins10- Oui.keyChangement,EtdumpSnapshots de mémoire
save 60 10000   #In60Secondes(1Minutes)Après,Si au moins10000- Oui.keyChangement,EtdumpSnapshots de mémoire

Paramètres de configuration du fichier

Par défautrdbLe chemin du fichier est le répertoire courant,Le nom du fichier estdump.rdb,Le chemin et le nom du fichier peuvent être modifiés dans le fichier de configuration,Respectivement.dirEtdbfilename.

# Répertoire dans lequel les instantanés sont stockés
dir ./ # rdbChemin de stockage des fichiers
dbfilename dump.rdb # rdbNom du fichier

Paramètres de configuration de compression

Lors d'une sauvegarde miroir,Si la compression est effectuée.

rdbcompression yes  #RedisPar défaut, la compression est activée.
# yes:Compression,Mais j'en ai besoin.cpuConsommation.
# no:Non comprimé,Besoin d'espace disque supplémentaire.

Si le Snapshot automatique n'est pas déclenché,Oui.RedisEffectuer une opération manuelle de Snapshot,saveEtbgsaveCommande pour un instantané manuel,Les deux ordres sont:

  • SAVE:Snapshot by Master Process,Bloquera d'autres demandes.
  • BGSAVE:AdoptionforkLe processus enfant prend un instantané,Ne bloque pas d'autres demandes.

Attention!:Parce queRedisUtiliserforkPour copier une copie du processus actuel,Le Sous - processus aura alors les mêmes ressources de mémoire que le processus principal,Par exemple, le processus principal8GMémoire,Alors, au moment de la sauvegarde,Il faut s'assurer qu'il y a16GMémoire,Sinon, la mémoire virtuelle sera activée,Très mauvais rendement.

Le processus de Snapshot est le suivant:

  1. RedisUtiliserforkLa fonction copie une copie du processus actuel(Processus parent)Copie de(Sous - processus);
  2. Le processus parent continue de recevoir et de traiter les commandes du client,Et le Sous - processus commence à écrire des données en mémoire dans des fichiers temporaires sur le disque dur;
  3. Lorsque le Sous - processus a terminé d'écrire toutes les données, le fichier temporaire remplace l'ancienRDBDocumentation,Jusqu'à ce que l'opération Snapshot soit terminée.(Attention!:Il y aura une commande d'écriture pour compresser le cache,Enregistrement écritrdbAction au moment du fichier)

En coursforkLe système d'exploitation utilise la copie en écriture(copy-on-write)Stratégie,C'est - à - dire:forkLes processus parent - enfant partagent les mêmes données de mémoire au moment où la fonction se produit,Quand le processus parent veut changer une partie des données(Si vous exécutez une commande d'écriture),Le système d'exploitation copie les données de la tranche pour s'assurer que les données du sous - processus ne sont pas affectées,Donc le nouveauRDBLes fichiers sont stockés pour l'exécutionforkDonnées instantanées de la mémoire à ce moment.

Le processus décrit ci - dessus permet de constater queRedisNe pas modifier pendant le SnapshotRDBDocumentation,Remplacer l'ancien fichier par le nouveau seulement après la fin du Snapshot,Ce qui veut dire qu'à tout momentRDBLes documents sont complets.Cela permet une sauvegarde programméeRDBFichier à mettre en œuvreRedisSauvegarde de la base de données.

Analyse de la compression du processus pour les instantanés:

RDBLes fichiers sont compressés(Comme indiqué ci - dessus:ConfigurablerdbcompressionParamètres pour désactiver les économies de compressionCPUOccupation)Format binaire pour,Donc l'espace utilisé sera inférieur à la taille des données en mémoire,Plus facile à transmettre.

Lire le processus de chargement du Snapshot:

  • RedisLire après le démarrageRDBFichier Snapshot,Charger les données du disque dur en mémoire.En fonction de la taille des données, de la structure et des performances du serveur,Ce temps est différent.Habituellement, un enregistrement de 10 millions de clés de type chaîne、La taille est1GBLe chargement du fichier Snapshot en mémoire coûte20~30Secondes.

  • AdoptionRDBComment réaliser la persistance,Une foisRedisSortie anormale,Toutes les données qui ont changé depuis le dernier instantané sont perdues.Pour ce faire, les développeurs doivent s'adapter à des applications spécifiques,Contrôler la perte de données possible dans une plage acceptable en combinant les conditions de Snapshot automatique.Si les données sont si importantes qu'elles ne peuvent supporter aucune perte,Vous pouvez envisager d'utiliserAOFComment persister.

RDB Avantages et inconvénients

Avantages:

  1. Idéal pour la récupération de données à grande échelle.
  2. Si l'entreprise n'exige pas beaucoup d'intégrité et de cohérence des données,RDBC'est un bon choix.

Inconvénients:

  1. Manque d'intégrité et de cohérence des données,Parce queRDBIl s'est peut - être arrêté à la dernière sauvegarde.
  2. Mémoire utilisée pour la sauvegarde,Parce queRedis Un sous - processus est créé indépendamment au moment de la sauvegarde,Écrire des données dans un fichier temporaire(À ce moment - là, les données en mémoire sont deux fois plus élevées),Enfin, remplacer le fichier temporaire par le fichier de sauvegarde précédent.
  3. Parce queRDBC'est parforkSous - processus pour aider à la persistance des données,Donc,,Si l'ensemble de données est plus grand,Cela pourrait entraîner l'arrêt du service sur l'ensemble du serveur pendant des centaines de millisecondes,Même si1Secondes.(Le processus principal est utilisé pour écrire et écraser).

RDBAvecAOFCritères de sélection des deux(Bien qu'il n'ait pas encore été ditAOF,Popularisation anticipée)

  • Si le système est prêt à sacrifier certaines performances,En échange d'une plus grande cohérence du cache(aof)

  • Ou être prêt à écrire fréquemment,Ne pas activer la sauvegarde en échange d'une meilleure performance,À exécuter manuellementsaveQuand,Encore une sauvegarde(rdb).

RedisAutoriser l'ouverture simultanéeAOFEtRDB,Assure la sécurité des données et facilite les opérations de sauvegarde.Redémarrer maintenantRedisAprèsRedisSera utiliséAOFFichier pour récupérer les données,Parce queAOFLa persistance du mode peut perdre moins de données.

Résumé

  • Redis Par défautRDBMode de persistance,Dans l'intervalle de temps spécifié,Effectuer un nombre spécifié d'opérations d'écriture,Écrivez les données de la mémoire sur le disque.

  • RDB La persistance convient à la récupération massive des données, mais elle est moins cohérente et complète.

  • Redis Ouverture manuelle requiseAOFMode de persistance,La valeur par défaut est d'ajouter le Journal des opérations d'écriture àAOFDans le document.

Alors...RedisIl est plus raisonnable de choisir d'effectuer la persistance et la récupération des données en pleine nuit.

版权声明
本文为[Tarzan d'Ali]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/09/20210915073252813u.html

Scroll to Top