Den tidligere skrevne zk-baserede distribuerede lås er som følger:
Redis implementerer princippet om distribueret låsning:
Princippet for at implementere distribuerede låse i Redis er at kalde SETNX-kommandoen redis, og hvis nøglen allerede eksisterer, gør SETNX-kommandoen ingenting. Kommandoen returnerer 1, når indstillingen lykkes, og 0, når indstillingen fejler.
Først simulerer vores hjemmeside 10.000 produkter og skriver derefter en konsol, der simulerer HTTP-forespørgsel, hvilket tager 40 sekunder at gennemføre købet, renderingen er som følger:
Opret en ny hjemmeside ASP.NET Core 3.1, og redis lock-pakken er som følger:
Jeg så, at mange release-låse på internettet er skrevet således:
Det føles dog som om, der kan være et problem; i tilfælde af samtidighed er det muligt at returnere true på tidspunktet for dommen, det er faktisk en lås, der er tilføjet af sig selv, men når låsen slettes, kan den være iI ekstreme tilfælde, låsen er blevet opnået af en anden tråd, hvis en andens lås bliver slettet.
Derfor skal du, når du får en lås, åbne en tråd for at forlænge låsens udløbstid.
WeatherForecastController-grænsefladen er som følger:
Du kan starte API-hjemmesiden via kommandolinjen, som nemt kan genstartes, som følger:
Opret en ny .NET Core mockup HTTP-anmodning til snap-køb, koden er som følger:
Hvis der er noget galt, tak fordi du rettede det.
Endelig vedhæft kildekoden:
Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venlig Svar
|