V poslovnih scenarijih sočasne operacije vsebin, kot so zaloga blaga, ista datoteka itd., niso dovoljene, programska aplikacija pa je nameščena na več strežnikih.
Prej napisana razpršena ključavnica na osnovi zk je naslednja:
Kar morate vedeti tudi za branje tega članka:
.NET Core implementira porazdeljene zaklepe na osnovi RedisNačelo je, da se pokliče ukaz SETNX za redis, če ključ že obstaja, ukaz SETNX ne naredi ničesar. Ukaz vrne 1, ko nastavitev uspe, in 0, ko nastavitev ne uspe.
Prijava do hiperpovezave je vidna.
Ustvarite nov .NET Core 3.1 konzolni projekt, dodajte referenco na StackExchange.Redis in uporabite ukaz nuget tako:
Metodo StringSet knjižnice pokličemo prek izvorne kode StackExchange.Redis, kjer vidimo, da bo metoda StringSet klicala zasebno metodo GetStringSetMessage za izvajanje različnih ukazov nabora prek vrednosti enumeracije , koda pa je naslednja:
Ukaz SETNX izvedemo 2000-krat preko vzporednega testnega klica programa, ki se izvede v 2 delih, pri čemer je veljavnost ključa v predpomnilniku 5 sekund, torej se ključ samodejno sprosti po 5 sekundah, torej se zaklep sprosti.
Koda je naslednja:
Kot lahko vidite, sta skupaj 2 uspešna vstavljanja in neuspešni poskusi leta 1998 točno takšni, kot smo pričakovali, upodobitve pa so naslednje:
Trenutno ključavnica še ni bila sproščena. (Konec)
|