Aiemmin kirjoitettu zk-pohjainen hajautettu lukko on seuraava:
Redis toteuttaa hajautetun lukituksen periaatteen:
Hajautettujen lukkojen toteuttamisen periaate Redisissä on kutsua redisin SETNX-komentoa, ja jos avain on jo olemassa, SETNX-komento ei tee mitään. Komento palauttaa arvon 1, kun asetus onnistuu, ja 0, kun asetus epäonnistuu.
Ensiksi verkkosivustomme simuloi 10 000 tuotetta ja kirjoittaa sitten konsolin, joka simuloi HTTP-pyyntöä, mikä vie 40 sekuntia ostoksen suorittamiseen. Renderöinti on seuraava:
Luo uusi verkkosivusto ASP.NET Core 3.1, ja redis lock -paketti on seuraava:
Huomasin, että monet internetin vapautuslukot on kirjoitettu seuraavasti:
Kuitenkin tuntuu, että ongelma saattaa olla – samanaikaisuuden tapauksessa on mahdollista palauttaa true tuomion hetkellä, se on todellakin lukko itsessään, mutta kun lukko poistetaan, se saattaa ollaÄärimmäisissä tapauksissa, lukko on saatu toisesta ketjusta, siltä varalta, että jonkun toisen lukko poistetaan.
Siksi lukkoa hankiessa sinun täytyy avata lanka pidentääksesi lukon vanhentumisaikaa.
WeatherForecastControllerin käyttöliittymä on seuraava:
Voit käynnistää API-verkkosivuston komentoriviltä, joka voidaan helposti käynnistää uudelleen seuraavasti:
Luo uusi .NET Core -malli HTTP-pyyntö snap-ostoa varten, koodi on seuraava:
Jos jokin on vialla, kiitos korjauksesta.
Lopuksi liitä lähdekoodi:
Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyvä Vastaus
|