Scénarios d’application des verrous distribués : Avec le développement des services, des applications individuelles deviennent des clusters, les verrous distribués résolvent le fonctionnement de différents processus (threads) sur la même ressource dans des situations concurrentes, et certains services doivent nécessiter un seul thread pour fonctionner, par exemple : changements dans les montants des dépôts, changements dans les stocks de marchandises, etc.
Révision:
Dans l’article précédent « [Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill », lorsque nous avons ajouté un verrou, nous avons également activé un thread en arrière-plan pour prolonger le temps du verrouillage, afin de garantir que, lorsque le verrou est libéré, le verrou occupé par d’autres threads ne soit pas supprimé par erreur.
Après avoir appris Redis à utiliser les scripts Lua, vous pouvez facilement utiliser des scripts pour compléter les verrous d’occupation et libérer les verrous.
Tout d’abord, regardons les rendus comme suit :
Nous avons d’abord ouvert 1000 fils parallèles pour concourir pour le verrou, et le cadenas a expiré pendant 5 secondes.Nous avons terminé 1000 fils en 5 secondes, et un seul fil a réussi à obtenir le verrouAprès avoir attendu 6 secondes, le verrou sera automatiquement libéré, et vous pouvez voir que la seconde tâche a réussi à obtenir le verrou, puis immédiatement libéré le verrou, et que le code suivant a réussi à obtenir le verrou.
Le script lua pour obtenir le verrou est le suivant :
Le script lua pour libérer le verrou est le suivant :
Code de l’interface :
Téléchargement du code source :La connexion hyperlientérée est visible.
Modifier « [Practice] ASP.NET Core basé sur Redis distributed lock flash sale » est implémenté à partir de cet article, et notre site web le simule10 000 articles, puis a écrit une console pour simuler le temps de requête HTTPLe complet affiche complet en 6 secondes, comme montré dans la figure ci-dessous :
Modifier le code de demande de simulation de test :
(Fin)
|