Le verrou distribué basé sur zk précédemment écrit est le suivant :
Redis met en œuvre le principe de verrouillage distribué :
Le principe de la mise en œuvre des verrous distribués dans Redis est d’appeler la commande SETNX de redis, et 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.
Tout d’abord, notre site web simule 10 000 produits, puis écrit une console simulant une requête HTTP, qui prend 40 secondes pour finaliser l’achat, le rendu est le suivant :
Créez un nouveau site web ASP.NET Core 3.1, et le package de verrouillage redis est le suivant :
J’ai vu que de nombreux verrous de libération sur Internet sont écrits comme suit :
Cependant, il semble qu’il puisse y avoir un problème : dans le cas de la concurrence, il est possible de revenir vrai au moment du jugement, c’est effectivement un verrou ajouté seul, mais lorsque le verrou est supprimé, il peut être dansDans les cas extrêmes, le verrou a été obtenu par un autre fil de discussion, au cas où le verrou de quelqu’un d’autre serait supprimé.
Par conséquent, lors de l’obtention d’une serrure, il faut ouvrir un filetage pour prolonger la durée d’expiration de la serrure.
L’interface WeatherForecastController est la suivante :
Vous pouvez lancer le site de l’API via la ligne de commande, qui peut être facilement redémarrée, comme suit :
Créez une nouvelle requête HTTP en maquette .NET Core pour un achat instantané, le code est le suivant :
S’il y a un problème, merci de l’avoir corrigé.
Enfin, joignez le code source :
Touristes, si vous voulez voir le contenu caché de ce post, s’il vous plaît Répondre
|