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).