0

J'ai lu comment redis standalone fournit un verrouillage optimiste. J'ai également trouvé l'algorithme de Redlock sur le site Web de Redis qui est disponible pour le verrouillage distribué. Maintenant, ce que je ne comprends pas, c'est pourquoi nous avons besoin de verrouillage distribué (mode cluster activé) dans Redis.Redis locks pour le mode cluster activé

En mode distribué, nous pouvons avoir jusqu'à 15 fragments, chaque fragment ayant des enregistrements sans chevauchement. Comme il n'y a pas de données partagées, quel est le besoin de verrous distribués?

Un verrouillage optimiste pour chaque partage ne suffit-il pas? Une raison pourrait être des opérations multi-clés, mais à part ça je ne peux rien penser.

Est-ce que je comprends bien?

Répondre

0

Les verrous distribués dans redis sont généralement utilisés pour verrouiller une application distribuée, pas spécifiquement les données redis. Par exemple - une application de magasinage a un bouton «payer», et le traitement de la transaction peut prendre quelques secondes, au cours desquelles l'utilisateur peut appuyer plusieurs fois sur le bouton.

Chacun de ces appels REST peut aller vers un serveur Web différent. Comment empêchez-vous de manière fiable plusieurs facturations? Avec une serrure Redis, bien sûr! Mais si vous utilisez un seul verrou de noeud/partition, vous risquez de faire échouer ce noeud dans cette fenêtre temporelle exacte, ce qui entraînera des transactions bâclées ou en double. L'utilisation d'un algorithme RedLock de verrouillage distribué garantit que même la défaillance d'un seul nœud maintiendra le verrou dans un état cohérent.

+0

Merci pour la réponse. D'après ce que je comprends, redis est un thread unique, donc même s'il reçoit des requêtes de différents serveurs web, la base de données va d'abord compléter une transaction avant de passer à l'autre. Comment le verrouillage aide-t-il? Corrigez-moi si j'ai tort, s'il-vous plait. – cyclops

+0

Vous verrouillez l'application dans son ensemble, et non elle-même. –