De eerder geschreven zk-gebaseerde gedistribueerde vergrendeling is als volgt:
Redis implementeert het principe van gedistribueerde vergrendeling:
Het principe van het implementeren van gedistribueerde sloten in Redis is om het SETNX-commando van redis aan te roepen, en als de sleutel al bestaat, doet het SETNX-commando niets. Het commando geeft 1 terug wanneer de instelling slaagt en 0 wanneer de instelling faalt.
Eerst simuleert onze website 10.000 producten en schrijft vervolgens een console die een HTTP-verzoek simuleert, wat 40 seconden duurt om de aankoop te voltooien; de rendering is als volgt:
Maak een nieuwe website aan ASP.NET Core 3.1, en het redis lock-pakket is als volgt:
Ik zag dat veel release-locks op het internet als volgt zijn geschreven:
Het lijkt echter alsof er een probleem kan zijn; in het geval van gelijktijdigheid is het mogelijk om op het moment van het vonnis true terug te geven, het is inderdaad een vergrendeling die op zichzelf is toegevoegd, maar wanneer de vergrendeling wordt verwijderd, kan deze in zijnIn extreme gevallen, de lock is verkregen door een andere thread, voor het geval de lock van iemand anders wordt verwijderd.
Daarom moet je bij het verkrijgen van een slot een draad openen om de houdbaarheid van het slot te verlengen.
De WeatherForecastController-interface is als volgt:
Je kunt de API-website starten via de commandoregel, die eenvoudig opnieuw kan worden opgestart, als volgt:
Maak een nieuw .NET Core-mockup HTTP-verzoek aan voor snap-aankoop, de code is als volgt:
Als er iets mis is, bedankt voor het corrigeren.
Voeg tenslotte de broncode bij:
Toeristen, als jullie de verborgen inhoud van dit bericht willen zien, alsjeblieft Antwoord
|