Раніше написаний розподілений замок на основі zk виглядає так:
Redis реалізує принцип розподіленого блокування:
Принцип реалізації розподілених блокувань у Redis полягає у виклику команди SETNX redis, і якщо ключ уже існує, команда SETNX нічого не виконує. Команда повертає 1, коли налаштування успішне, і 0, коли налаштування не спрацьовує.
Спочатку наш вебсайт імітує 10 000 продуктів, а потім пише консольний HTTP-запит, який займає 40 секунд для завершення покупки, рендеринг виглядає так:
Створіть новий вебсайт ASP.NET Core 3.1, і пакет redis lock виглядає так:
Я бачив, що багато блокувань звільнення в Інтернеті написані так:
Однак здається, що може виникнути проблема: у випадку паралелізму можливо повернути true у момент судження, це дійсно блокування, додане самостійно, але коли блокування видаляється, воно може бути вУ крайніх випадках, блокування отримано через іншу тему, на випадок, якщо блокування чиєїсь іншої буде видалено.
Тому при отриманні блокування потрібно відкрити потік, щоб продовжити термін дії замка.
Інтерфейс WeatherForecastController виглядає так:
Ви можете запустити вебсайт API через командний рядок, який легко перезапустити, наступним чином:
Створіть новий макет HTTP-запиту .NET Core для швидкої покупки, код виглядає так:
Якщо щось не так, дякую, що виправили.
Нарешті, додайте вихідний код:
Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласка Відповідь
|