У бізнес-сценаріях одночасні операції з контентом, такими як товарний інвентар, один і той самий файл тощо, не дозволяються, і програмний додаток розгортається на кількох серверах.
Раніше написаний розподілений замок на основі 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 році — це саме те, чого ми очікували, а рендери такі:
На даний момент замок ще не був відкритий. (Кінець)
|