Conception et mise en œuvre de Redis - (g) Redis mécanisme de persistance

endurance RDB de

       Depuis Redis est une base de données de la mémoire, alors quand sera sauvegardé la base de données est en panne, toutes les données seront perdues, afin d'éviter la perte de données, nous utilisons la base de données RDB comme un fichier. Première génération fichier de commandes RDB, il y a deux: SAVE et BGSAVE

       ENREGISTRER commande serveur Redis bloque jusqu'à ce que le fichier est créé RDB

       BGSAVE pas bloquer le serveur, créez un processus enfant pour sauver

       RDB après que le fichier est généré lorsque Redis démarre, il chargera automatiquement le fichier, sans commande manuelle

       Note: AOF priorité plus élevée que RDB, il utilisera par défaut de restaurer la base de données AOF, en plus de ne pas permettre la répétition du BGSAVE de conduite ou SAVE, bloquera jusqu'à ce que le fichier RDB de chargement

       Nous pouvons définir la condition de synchronisation commande enregistrée BGSAVE effectuée automatiquement stockés dans la redisServer de saveparam dans le format, tant que l'une condition est remplie sera exécutée ENREGISTRER

       De plus, le serveur détient la propriété pour la sale combien de fois modifiés depuis la dernière génération de fichiers RDB enregistrés sur le temps de la première représentation sur la commande Enregistrer enregistrement LASTSAVE

fichiers RDB sauvèrent ressemblent vraiment?

Contenu de chaque où base de données est la suivante:

Lors de la lecture équivalent selectDB de dire la base de données Redis sélectionner DB qui, renverra les données suivantes en elle. Et la structure spécifique de paires de valeurs de clé comme indiqué ci-dessous:

la persistance AOF

       Append Seul fichier ~ pour la persistance en sauvegardant l'exécution de la commande d'écriture Redis à la demande de Redis pour enregistrer l'accord en texte brut.

       Append commande: chaque exécution d'une commande, une commande sera ajouté au serveur tampon AOF

Fichier écriture et la synchronisation:

       serveur Redis est en fait une boucle, continuer à accepter la demande du client (qui est, un événement), il peut y avoir une demande au cours d'une commande d'écriture, la mémoire tampon est écrit à l'AOF, chaque événement est terminé ou non tampon AOF est écrit dans le fichier il? Il y a trois stratégies: toujours toujours écrit, everysec par seconde (la valeur par défaut), non jamais

       Comment récupérer de la base de données fichier AOF?

             Créer un pseudo-client, exécuté une par une commande AOF

       fichier rewrite AOF

              AOF diminue fichier redondant, il est fourni commande BGREWRITEAOF, cette commande va lire l'état actuel de la base de données et générer une commande, afin de ne pas bloquer le thread principal, également utilisé de la manière du fil de l'enfant. Cela pose un problème, le thread principal d'exécution est encore Barabara, le fil de l'enfant à lire tout de l'état de la commande de base de données va générer des problèmes incohérents, comment le résoudre?

       AOF réécriture fournir un tampon

Lorsque le processus enfant est terminé AOF rewrite, il signalera le processus parent, le processus parent après avoir reçu le fichier en écriture ré-écriture AOF une fois mémoire tampon des données AOF (cette fois bloquer le processus parent).

Publié 47 articles originaux · louange won 8 · vues 30000 +

Je suppose que tu aimes

Origine blog.csdn.net/nanchengyu/article/details/89338031
conseillé
Classement