Dans les scénarios d’affaires, les opérations simultanées de contenu, telles que l’inventaire de marchandises ou le même fichier, etc., ne sont pas autorisées, et l’application du programme est déployée sur plusieurs serveurs.
Le verrou distribué basé sur zk précédemment écrit est le suivant :
Ce que vous devez aussi savoir pour lire cet article :
.NET Core implémente des verrous distribués basés sur RedisLe principe est d’appeler la commande SETNX de redis, si la clé existe déjà, la commande SETNX ne fait rien. La commande répond à 1 lorsque le réglage réussit et à 0 lorsqu’il échoue.
La connexion hyperlientérée est visible.
Créez un nouveau projet console .NET Core 3.1, ajoutez une référence StackExchange.Redis et utilisez la commande nuget comme suit :
Nous appelons la méthode StringSet de la bibliothèque, via le code source StackExchange.Redis ; nous pouvons voir que la méthode StringSet appellera la méthode privée GetStringSetMessage pour exécuter différentes commandes set via la valeur d’énumération de when , le code est le suivant :
Nous exécutons la commande SETNX 2000 fois via un appel de test parallèle au programme, qui s’exécute en 2 parties, durant lesquelles la validité du cache de la clé est de 5 secondes, c’est-à-dire que la clé sera automatiquement libérée après 5 secondes, c’est-à-dire que le verrou sera libéré.
Le code est le suivant :
Comme vous pouvez le voir, un total de 2 insertions réussies et 1998 tentatives ratées sont exactement ce à quoi nous nous attendions, et les rendus sont les suivants :
À ce jour, la serrure n’a pas encore été libérée. (Fin)
|