Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 34174|Svare: 5

[.NET Core] .NET Core implementerer prinsippparsing av distribuert lås basert på Redis

[Kopier lenke]
Publisert på 22.09.2020 09:17:22 | | | |
I forretningsscenarier er det ikke tillatt med samtidige operasjoner av innhold, som varelager, samme fil osv., og programapplikasjonen distribueres på flere servere.
[Faktisk kamp] ASP.NET Core er basert på Redis distribuert lås flash-salg
https://www.itsvse.com/thread-9397-1-1.html

Den tidligere skrevne zk-baserte distribuerte låsen er som følger:

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

Det du også må vite for å lese denne artikkelen:

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

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

.NET Core implementerer distribuerte låser basert på RedisPrinsippet er å kalle SETNX-kommandoen redis, hvis nøkkelen allerede eksisterer, gjør SETNX-kommandoen ingenting. Kommandoen returnerer 1 når innstillingen lykkes, og 0 når innstillingen feiler.

Innloggingen med hyperkoblingen er synlig.

Lag et nytt .NET Core 3.1-konsollprosjekt, legg til en StackExchange.Redis-referanse, og bruk nuget-kommandoen som følger:

Vi kaller bibliotekets StringSet-metode, gjennom kildekoden til StackExchange.Redis kan vi se at StringSet-metoden vil kalle den private metoden GetStringSetMessage for å utføre ulike settkommandoer gjennom oppramsningsverdien for når, koden er som følger:

Vi utfører SETNX-kommandoen 2000 ganger gjennom et parallelt testkall til programmet, som utføres i 2 deler, hvor nøkkelens cache-gyldighet er 5 sekunder, det vil si at nøkkelen automatisk frigjøres etter 5 sekunder, det vil si at låsen blir frigjort.

Koden er som følger:


Som du kan se, er totalt 2 vellykkede innsettinger og mislykkede forsøk i 1998 akkurat det vi forventet, og gjengivelsene er som følger:


På nåværende tidspunkt er låsen ennå ikke åpnet.
(Slutt)









Foregående:Klarte ikke å finne en løsning for deler av stien "\bin\roslyn\csc.exe"
Neste:EF Core Series 2 kapsler inn OnModelCreating, lager indekser ved hjelp av refleksjoner, og mer
 Vert| Publisert på 26.09.2020 15:37:52 |
test123
Publisert på 20.11.2020 11:18:31 |
Hvis det finnes et flertrådet miljø og et flerinstansmiljø ved distribusjon av containere, er det et problem med denne håndteringen?
 Vert| Publisert på 20.11.2020 11:29:44 |
qiuyueming Publisert 2020-11-20 11:18
Hvis det finnes et flertrådet miljø og et flerinstansmiljø ved distribusjon av containere, er det et problem med denne håndteringen? ...

Multi-instans betyr multitråding, og i kildekoden er flertrådede kall redis, og bare én tråd får lås
Publisert på 22.03.2022 14:32:40 |
Støtte, støtte
Publisert på 23.03.2022 11:15:30 |
Lær at dette er bra @
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com