Predtým napísaný zk-based distributed lock je nasledovný:
Redis implementuje princíp distribuovaného zamykania:
Princíp implementácie distribuovaných zámkov v Redis spočíva v zavolaní príkazu SETNX v redis, a ak kľúč už existuje, príkaz SETNX nič nerobí. Príkaz vráti 1, keď nastavenie uspeje, a 0, keď nastavenie zlyhá.
Najprv naša webová stránka simuluje 10 000 produktov a potom napíše konzolu simulujúcu HTTP požiadavku, ktorá trvá 40 sekúnd na dokončenie nákupu, pričom zobrazenie je nasledovné:
Vytvorte novú webovú stránku ASP.NET Core 3.1 a balík Redis Lock je nasledovný:
Videla som, že mnohé uvoľňujúce zámky na internete sú napísané nasledovne:
Zdá sa však, že môže byť problém, v prípade súbežnosti je možné vrátiť true v čase hodnotenia, je to skutočne zámok pridaný sám o sebe, ale keď sa zámok odstráni, môže byť vV extrémnych prípadoch, zámok bol získaný iným vláknom, pre prípad, že by bol zámok niekoho iného vymazaný.
Preto pri získavaní zámku musíte otvoriť závit, aby ste predĺžili jeho vypršanie.
Rozhranie WeatherForecastController je nasledovné:
Webovú stránku API môžete spustiť cez príkazový riadok, ktorý sa dá jednoducho reštartovať, nasledovne:
Vytvorte novú .NET Core maketu HTTP požiadavky na nákup snapu, kód je nasledovný:
Ak je niečo zlé, ďakujem za opravu.
Nakoniec pripojte zdrojový kód:
Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím. Odpoveď
|