Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 34174|Svar: 5

[.NET Core] .NET Core implementerar principen för distribuerat lås baserat på Redis

[Kopiera länk]
Publicerad på 2020-09-22 09:17:22 | | | |
I affärsscenarier är samtidiga operationer av innehåll, såsom varuinventarier, samma fil, etc., inte tillåtna, och programapplikationen distribueras på flera servrar.
[Faktisk strid] ASP.NET Core är baserat på Redis distribuerade låsflash-försäljning
https://www.itsvse.com/thread-9397-1-1.html

Det tidigare skrivna zk-baserade distribuerade låset är följande:

.net/c# Zookeeper distribuerad låsimplementering [källkod]
https://www.itsvse.com/thread-4651-1-1.html

Vad du också behöver veta för att läsa denna artikel:

Volatile vs. Interlocked vs. lock
https://www.itsvse.com/thread-5023-1-1.html

C# Parallell beräkning Parallell.For&Parallell.For
https://www.itsvse.com/thread-3671-1-1.html

.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)









Föregående:Misslyckades med att hitta en lösning på en del av vägen "\bin\roslyn csc.exe\"
Nästa:EF Core Series 2 kapslar in OnModelCreating, skapar index med reflektioner och mer
 Hyresvärd| Publicerad på 2020-09-26 15:37:52 |
test123
Publicerad på 2020-11-20 11:18:31 |
Om det finns en multitrådad miljö och en multiinstansmiljö vid distribution av containrar, är det då ett problem med denna hantering?
 Hyresvärd| Publicerad på 2020-11-20 11:29:44 |
qiuyueming Publicerad den 2020-11-20 11:18
Om det finns en multitrådad miljö och en multiinstansmiljö vid distribution av containrar, är det då ett problem med denna hantering? ...

Multi-instans betyder multitrådning, och i källkoden kallas multitrådade anrop redis, och endast en tråd får ett lås
Publicerad på 2022-03-22 14:32:40 |
Stöd, stöd
Publicerad på 2022-03-23 11:15:30 |
Lär dig att det här är bra @
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com