Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 34174|Svar: 5

[.NET Core] .NET Core implementerer parsing af distribueret låseprincip baseret på Redis

[Kopier link]
Opslået på 22/09/2020 09.17.22 | | | |
I forretningsscenarier er samtidige operationer af indhold, såsom varelager, samme fil osv., ikke tilladt, og programapplikationen implementeres på flere servere.
[Faktisk kamp] ASP.NET Core er baseret på Redis distribueret lås flash-salg
https://www.itsvse.com/thread-9397-1-1.html

Den tidligere skrevne zk-baserede distribuerede lås er som følger:

.net/c# Zookeeper distribueret låseimplementering [kildekode]
https://www.itsvse.com/thread-4651-1-1.html

Hvad du også skal vide for at læse denne artikel:

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

C# Parallel beregning Parallel.For&Parallel.For
https://www.itsvse.com/thread-3671-1-1.html

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









Tidligere:Fandt ikke en løsning på en del af stien "\bin\roslyn csc.exe\"
Næste:EF Core Series 2 indkapsler OnModelCreating, opretter indekser ved hjælp af refleksioner og mere
 Udlejer| Opslået på 26/09/2020 15.37.52 |
test123
Opslået på 20/11/2020 11.18.31 |
Hvis der er et multitrådet miljø og et multi-instans miljø ved udrulning af containere, er der så et problem med denne håndtering?
 Udlejer| Opslået på 20/11/2020 11.29.44 |
qiuyueming Opslået den 20-11-20 kl. 11:18
Hvis der er et multitrådet miljø og et multi-instans miljø ved udrulning af containere, er der så et problem med denne håndtering? ...

Multi-instans betyder multi-threading, og i kildekoden er multi-threaded kald redis, og kun én thread får en lock
Opslået på 22/03/2022 14.32.40 |
Støtte, støtte
Opslået på 23/03/2022 11.15.30 |
Lær, det er godt @
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com