Den tidligere skrevne zk-baserte distribuerte låsen er som følger:
Redis implementerer prinsippet om distribuert låsing:
Prinsippet for å implementere distribuerte låser i Redis er å kalle SETNX-kommandoen i redis, og hvis nøkkelen allerede eksisterer, gjør SETNX-kommandoen ingenting. Kommandoen returnerer 1 når innstillingen lykkes, og 0 når innstillingen feiler.
Først simulerer nettsiden vår 10 000 produkter, og deretter skriver vi en konsoll som simulerer HTTP-forespørsel, som tar 40 sekunder å fullføre kjøpet, renderingen er som følger:
Opprett et nytt nettsted ASP.NET Core 3.1, og redis lock-pakken er som følger:
Jeg så at mange release-låser på Internett er skrevet slik:
Det føles imidlertid som om det kan være et problem, i tilfelle samtidighet er det mulig å returnere true på tidspunktet for dommen, det er faktisk en lås som legges til av seg selv, men når låsen slettes, kan den være iI ekstreme tilfeller, låsen er blitt oppnådd av en annen tråd, i tilfelle noen andres lås blir slettet.
Derfor, når du skaffer en lås, må du åpne en tråd for å forlenge låsens utløpstid.
Grensesnittet til WeatherForecastController er som følger:
Du kan starte API-nettstedet via kommandolinjen, som enkelt kan startes på nytt, som følger:
Opprett en ny .NET Core-mockup HTTP-forespørsel for snap-kjøp, koden er som følger:
Hvis det er noe galt, takk for at du rettet det.
Til slutt, legg ved kildekoden:
Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snill Svare
|