Maison base de données Redis Principe de synchronisation maître-esclave Redis

Principe de synchronisation maître-esclave Redis

Jun 22, 2020 pm 01:22 PM

Principe de synchronisation maître-esclave Redis

1. Préface

Afin d'assurer la haute disponibilité de redis, un mode cluster est généralement construit, qui est le mode maître-esclave.

Le mode maître-esclave peut assurer la haute disponibilité de redis, alors comment redis assure-t-il la cohérence des données du serveur maître-esclave ? Parlons ensuite brièvement du principe de redis maître (maître) et esclave ? synchronisation (esclave).

2. Première synchronisation complète

Lorsqu'un serveur redis envoie la commande salveof au serveur maître pour la première fois, le serveur redis esclave effectuera une synchronisation complète, les étapes de synchronisation sont indiquées dans la figure ci-dessous :

Principe de synchronisation maître-esclave Redis

  • Le serveur esclave envoie la commande psync au maître (la commande psync envoyée à ce moment est psync? -1 ), dites au maître que je dois synchroniser les données.
  • Après avoir reçu la commande psync, le maître exécutera la commande BGSAVE pour générer un instantané du fichier RDB.
  • Une fois la génération terminée, le fichier RDB sera envoyé à l'esclave.
  • Lorsque l'esclave reçoit le fichier, il chargera l'instantané RDB et modifiera l'état de la base de données pour qu'il soit cohérent avec l'état du maître lors de l'exécution de BGSAVE.
  • Le maître enverra toutes les commandes d'écriture enregistrées dans le tampon pour indiquer à l'esclave que la synchronisation peut être effectuée
  • L'esclave exécute ces commandes d'écriture .

3. Propagation des commandes

L'esclave s'est déjà synchronisé avec le maître, alors si le suivant maître Pour une opération d'écriture, telle qu'un simple nom de jeu redis, une fois que le maître a exécuté la commande actuelle, il enverra la commande actuelle à l'esclave pour exécution afin d'assurer la cohérence des données.

4. Recopie

Lorsque l'esclave est déconnecté et reconnecté, il sera resynchronisé. La resynchronisation est divisée en synchronisation complète et partielle. synchronisation

Tout d'abord, jetons un coup d'œil à la tendance générale de la synchronisation partielle

Principe de synchronisation maître-esclave Redis

  • Lorsque l'esclave se déconnecte et se reconnecte , il enverra la commande psync au maître.
  • Après avoir reçu psync, le maître renverra une réponse +continue, indiquant que l'esclave peut effectuer une synchronisation partielle.
  • le maître envoie la commande d'écriture après la déconnexion à l'esclave
  • l'esclave exécute la commande d'écriture.

En fait, après que l'esclave ait envoyé la commande psync au maître, le maître doit encore juger s'il doit effectuer une synchronisation partielle en fonction des trois points suivants.

Présentons d'abord les trois aspects :

  • ID d'exécution du serveur

Chaque après un redis Le serveur est démarré, un ID en cours d'exécution sera généré.

Lors de la synchronisation initiale, le maître indiquera à l'esclave son identifiant, et l'esclave l'enregistrera lorsque l'esclave se déconnectera et se reconnectera, il tentera d'effectuer la synchronisation s'il le souhaite. constate que l'ID appartient à ce maître. Resynchronisation partielle. Une resynchronisation complète sera effectuée lorsque l'ID est différent de celui du maître actuellement connecté.

  • Décalage de réplication

Le décalage de réplication inclut le décalage de réplication maître Lorsque le décalage de réplication du deux bases de données sont identiques après la synchronisation initiale, puis le maître exécute une commande d'écriture, puis le décalage du maître est +1, le maître écrira la commande sur l'esclave, l'esclave l'exécutera une fois et le décalage de l'esclave Shift +1 donc les versions sont cohérentes.

  • Tampon du backlog de réplication

Le tampon du backlog de réplication est corrigé et maintenu par le maître Une file d'attente de longueur premier entré, premier sorti.

Lorsque l'esclave envoie pync, il enverra également son propre offset au maître. Lorsque les données après l'offset de l'esclave existent toujours dans le tampon, une notification +continue sera renvoyée. L'esclave effectue une resynchronisation partielle.

Lorsque les données après le décalage esclave ne sont plus dans le tampon, une resynchronisation complète sera effectuée.

En combinant les trois points ci-dessus, nous pouvons résumer :

  • Lorsque l'esclave est déconnecté et reconnecté, il enverra la commande psync au maître.
  • Le maître jugera d'abord l'identifiant en cours d'exécution du serveur S'il est le même que le sien, il jugera le décalage
  • Le maître. jugera de son propre biais. Si le montant du décalage est cohérent avec le décalage de l'esclave.
  • S'il est incohérent, le maître ira dans le tampon pour déterminer si les données après le décalage de l'esclave existent.
  • S'il existe, une réponse +continue sera renvoyée, indiquant que l'esclave peut effectuer une synchronisation partielle.
  • le maître envoie la commande d'écriture après la déconnexion à l'esclave
  • l'esclave exécute la commande d'écriture.

5. Le processus final de synchronisation maître-esclave

Principe de synchronisation maître-esclave Redis

6. Conclusion

Récemment, selon les besoins de l'entreprise, j'ai construit un cluster maître-esclave Redis et utilisé des sentinelles pour surveiller et implémenter le maître-esclave. commutation esclave. Par conséquent, j'ai réglé le principe maître-esclave de Redis basé sur « Conception et mise en œuvre de Redis » pour approfondir mon impression.

Tutoriel recommandé : "tutoriel 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 de ce site Web
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

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment choisir une clé de fragment dans le cluster redis? Comment choisir une clé de fragment dans le cluster redis? Mar 17, 2025 pm 06:55 PM

Comment choisir une clé de fragment dans le cluster redis?

Existe-t-il un raccourci pour consulter la version redis? Existe-t-il un raccourci pour consulter la version redis? Mar 04, 2025 pm 05:59 PM

Existe-t-il un raccourci pour consulter la version redis?

Comment afficher les versions à partir de redis via la ligne de commande Comment afficher les versions à partir de redis via la ligne de commande Mar 04, 2025 pm 06:00 PM

Comment afficher les versions à partir de redis via la ligne de commande

Comment est la compatibilité des différentes versions de Redis Comment est la compatibilité des différentes versions de Redis Mar 04, 2025 pm 05:57 PM

Comment est la compatibilité des différentes versions de Redis

Comment utiliser Redis pour les messages pub / sous? Comment utiliser Redis pour les messages pub / sous? Mar 17, 2025 pm 06:48 PM

Comment utiliser Redis pour les messages pub / sous?

Quel est le numéro de version redis Quel est le numéro de version redis Mar 04, 2025 pm 06:01 PM

Quel est le numéro de version redis

Comment mettre en œuvre des stratégies d'invalidation du cache dans Redis? Comment mettre en œuvre des stratégies d'invalidation du cache dans Redis? Mar 17, 2025 pm 06:46 PM

Comment mettre en œuvre des stratégies d'invalidation du cache dans Redis?

Comment utiliser Redis pour les files d'attente et le traitement des antécédents? Comment utiliser Redis pour les files d'attente et le traitement des antécédents? Mar 17, 2025 pm 06:51 PM

Comment utiliser Redis pour les files d'attente et le traitement des antécédents?

See all articles