В бизнес сценарии едновременни операции със съдържание, като инвентаризация на стоки, един и същ файл и др., не са позволени, а програмното приложение се разгръща на няколко сървъра.
Предварително написаната zk-базирана разпределена заключваща система е следната:
Какво също трябва да знаете, за да прочетете тази статия:
.NET Core реализира разпределени заключвания, базирани на RedisПринципът е да се извиква командата SETNX на redis, ако ключът вече съществува, командата SETNX не прави нищо. Командата връща 1, когато настройката успее, и 0, когато настройката не успее.
Входът към хиперлинк е видим.
Създайте нов конзолен проект за .NET Core 3.1, добавете StackExchange.Redis референция и използвайте командата nuget по следния начин:
Извикваме метода StringSet на библиотеката, чрез изходния код на StackExchange.Redis, виждаме, че методът StringSet ще извика частния метод на GetStringSetMessage, за да изпълни различни команди на множеството чрез стойността на изброяването, когато кодът е следният:
Изпълняваме командата SETNX 2000 пъти чрез паралелно тестово извикване към програмата, което се изпълнява в 2 части, при които кеш валидността на ключа е 5 секунди, тоест ключът се освобождава автоматично след 5 секунди, тоест заключването се освобождава.
Кодът е следният:
Както виждате, общо 2 успешни вмъквания и неуспешни опити през 1998 г. са точно това, което очаквахме, а визуализациите са следните:
Към момента ключалката все още не е освободена. (Край)
|