Dříve napsaný distribuovaný zámek založený na zk je následující:
Redis implementuje princip distribuovaného uzamčování:
Princip implementace distribuovaných zámků v Redis spočívá v zavolání příkazu SETNX v redis, a pokud klíč již existuje, příkaz SETNX nic neudělá. Příkaz vrátí 1, když nastavení uspěje, a 0, když nastavení selže.
Nejprve naše webová stránka simuluje 10 000 produktů a poté napíše konzoli simulující HTTP požadavek, který trvá 40 sekund na dokončení nákupu, přičemž vykreslování je následující:
Vytvořte novou webovou stránku ASP.NET Core 3.1 a balíček Redis Lock je následující:
Viděl jsem, že mnoho zámků na internetu je napsáno následovně:
Nicméně se zdá, že může být problém, v případě souběžnosti je možné vrátit true v době rozsudku, skutečně je to zámek přidaný sám o sobě, ale když je zámek odstraněn, může být vV extrémních případech, zámek byl získán jiným vláknem, pro případ, že by byl zámek někoho jiného smazán.
Proto při získávání zámku musíte otevřít vlákno, abyste prodloužili dobu jeho vypršení.
Rozhraní WeatherForecastController je následující:
Web API můžete spustit přes příkazový řádek, který lze snadno restartovat, následovně:
Vytvořte nový návrh .NET Core pro HTTP požadavek pro nákup snapu, kód je následující:
Pokud je něco špatně, děkuji za opravu.
Nakonec přiložte zdrojový kód:
Turisté, pokud chcete vidět skrytý obsah tohoto příspěvku, prosím Odpověď
|