I affärsscenarier är samtidiga operationer av innehåll, såsom varuinventarier, samma fil, etc., inte tillåtna, och programapplikationen distribueras på flera servrar.
Det tidigare skrivna zk-baserade distribuerade låset är följande:
Vad du också behöver veta för att läsa denna artikel:
.NET Core implementerar distribuerade lås baserade på RedisPrincipen är att anropa SETNX-kommandot redis, om nyckeln redan existerar, gör SETNX-kommandot ingenting. Kommandot returnerar 1 när inställningen lyckas och 0 när inställningen misslyckas.
Inloggningen med hyperlänken är synlig.
Skapa ett nytt .NET Core 3.1-konsolprojekt, lägg till en StackExchange.Redis-referens och använd nuget-kommandot enligt följande:
Vi anropar bibliotekets StringSet-metod, genom källkoden StackExchange.Redis kan vi se att StringSet-metoden anropar den privata metoden GetStringSetMessage för att utföra olika set-kommandon genom uppräkningsvärdet när, koden är följande:
Vi kör SETNX-kommandot 2000 gånger genom ett parallellt testanrop till programmet, som körs i 2 omgångar, där nyckelns cachegiltighet är 5 sekunder, det vill säga nyckeln släpps automatiskt efter 5 sekunder, det vill säga låset släpps.
Koden är följande:
Som du kan se är totalt 2 lyckade insättningar och misslyckade försök 1998 precis vad vi förväntade oss, och renderingarna är följande:
För närvarande har låset ännu inte släppts. (Slut)
|