Bruksscenarier for distribuerte låser: Med utviklingen av tjenester blir enkeltapplikasjoner klynger, distribuerte låser løser driften av ulike prosesser (tråder) på samme ressurs i samtidige situasjoner, og noen tjenester må kreve én enkelt tråd for å fungere, for eksempel: endringer i innskuddsbeløp, endringer i varelager, osv.
Anmeldelse:
I den forrige artikkelen "[Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill", da vi la til en lås, aktiverte vi også en bakgrunnstråd for å forlenge låsetiden, slik at når låsen frigjøres, vil ikke låsen som andre tråder har opptatt bli slettet ved en feil.
Etter å ha lært Redis å bruke Lua-skript, kan du enkelt bruke skript for å fullføre okkupasjonslåser og frigjøre låser.
La oss først se på gjengivelsene som følger:
Vi åpnet først 1000 parallelle gjenger for å konkurrere om låsen, og låsen gikk ut i 5 sekunder.Vi fullførte 1000 tråder på 5 sekunder, og bare én tråd klarte å få låsenEtter å ha ventet i 6 sekunder, vil låsen automatisk bli frigjort, og du kan se at den andre oppgaven har fått låsen, og umiddelbart frigjort låsen, og den påfølgende koden har fått låsen.
Lua-skriptet for å få låsen er som følger:
Lua-skriptet for å frigjøre låsen er som følger:
Grensesnittkode:
Nedlasting av kildekode:Innloggingen med hyperkoblingen er synlig.
Modifiser "[Practice] ASP.NET Core basert på Redis distributed lock flash-salg" er implementert i denne artikkelen, og nettsiden vår simulerer det10 000 gjenstander, og skrev deretter en konsoll for å simulere HTTP-forespørselstidenUtsolgt er ferdig på 6 sekunder, som vist i figuren nedenfor:
Endre koden til testsimuleringsforespørselen:
(Slutt)
|