V obchodních scénářích nejsou povoleny současné operace s obsahem, jako je komoditní inventář, stejný soubor apod., a programová aplikace je nasazena na více serverech.
Dříve napsaný distribuovaný zámek založený na zk je následující:
Co byste také měli vědět, abyste si přečetli tento článek:
.NET Core implementuje distribuované zámky založené na RedisuPrincip spočívá v volání příkazu SETNX v redis., pokud klíč již existuje, příkaz SETNX nic nedělá. Příkaz vrátí 1, když nastavení uspěje, a 0, když nastavení selže.
Přihlášení k hypertextovému odkazu je viditelné.
Vytvořte nový .NET Core 3.1 konzolový projekt, přidejte odkaz na StackExchange.Redis a použijte příkaz nuget následovně:
Metodu StringSet knihovny voláme prostřednictvím zdrojového kódu StackExchange.Redis, kde vidíme, že metoda StringSet volá soukromou metodu GetStringSetMessage pro vykonání různých příkazů sady pomocí enumerační hodnoty , kód je následující:
Příkaz SETNX vykonáme 2000krát prostřednictvím paralelního testovacího volání programu, které se provádí ve 2 částech, přičemž platnost cache klíče je 5 sekund, tedy klíč je automaticky uvolněn po 5 sekundách, tedy zámek je uvolněn.
Kód je následující:
Jak vidíte, celkem 2 úspěšné vložení a neúspěšné pokusy z roku 1998 jsou přesně to, co jsme očekávali, a vizualizace jsou následující:
V tuto chvíli zámek ještě nebyl uvolněn. (Konec)
|