Tillämpningsscenarier för distribuerade lås: Med utvecklingen av tjänster blir enskilda applikationer kluster, distribuerade lås löser driften av olika processer (trådar) på samma resurs i samtidiga situationer, och vissa tjänster måste kräva en enda tråd för att fungera, till exempel: förändringar i insättningsbelopp, förändringar i varulager, etc.
Recension:
I den föregående artikeln "[Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill", när vi lade till ett lås, aktiverade vi också en bakgrundstråd för att förlänga låstiden, så att låset som är upptaget av andra trådar inte av misstag raderas när låset släpps.
Efter att ha lärt dig Redis att använda Lua-skript kan du enkelt använda skript för att slutföra och frigöra beläggningslussar.
Först ska vi titta på renderingarna enligt följande:
Vi öppnade först 1000 parallella trådar för att konkurrera om låset, och låset gick ut i 5 sekunder.Vi klarade 1000 trådar på 5 sekunder, och endast en tråd lyckades få låsetEfter att ha väntat i 6 sekunder släpps låset automatiskt, och du kan se att den andra uppgiften har lyckats få låset och omedelbart släppt låset, och den efterföljande koden har lyckats låsa låset.
Lua-skriptet för att få låset är följande:
Lua-skriptet för att släppa låset är följande:
Gränssnittskod:
Källkodsnedladdning:Inloggningen med hyperlänken är synlig.
Modifiera "[Practice] ASP.NET Core baserat på Redis distributed lock flash sale" är implementerat med denna artikel, och vår webbplats simulerar det10 000 föremål, och skrev sedan en konsol för att simulera HTTP-förfrågningstidenSlutsålda är klar på 6 sekunder, som visas i figuren nedan:
Modifiera kod för testsimuleringsförfrågningar:
(Slut)
|