I forretningsscenarier er samtidige operationer af indhold, såsom varelager, samme fil osv., ikke tilladt, og programapplikationen implementeres på flere servere.
Den tidligere skrevne zk-baserede distribuerede lås er som følger:
Hvad du også skal vide for at læse denne artikel:
.NET Core implementerer distribuerede låse baseret på RedisPrincippet er at kalde SETNX-kommandoen redis, hvis nøglen allerede eksisterer, gør SETNX-kommandoen ingenting. Kommandoen returnerer 1, når indstillingen lykkes, og 0, når indstillingen fejler.
Hyperlink-login er synlig.
Opret et nyt .NET Core 3.1 konsolprojekt, tilføj en StackExchange.Redis-reference, og brug nuget-kommandoen som følger:
Vi kalder bibliotekets StringSet-metode via kildekoden StackExchange.Redis, og vi kan se, at StringSet-metoden vil kalde den private metode GetStringSetMessage for at udføre forskellige sætkommandoer via opremsningsværdien for hvornår, koden er som følger:
Vi udfører SETNX-kommandoen 2000 gange gennem et parallelt testkald til programmet, som udføres i 2 omgange, hvor nøglens cache-gyldighed er 5 sekunder, det vil sige, nøglen vil automatisk blive frigivet efter 5 sekunder, det vil sige, låsen vil blive frigivet.
Koden er som følger:
Som du kan se, er i alt 2 vellykkede indsættelser og mislykkede forsøg i 1998 præcis, hvad vi forventede, og renderingerne er som følger:
På nuværende tidspunkt er låsen endnu ikke blevet frigivet. (Slut)
|