Ранее написанный распределённый замок на базе 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 для быстрой покупки, код выглядит следующим образом:
Если что-то не так, спасибо, что исправили.
Наконец, приложите исходный код:
Туристы, если вы хотите увидеть скрытое содержание этого поста, пожалуйста Ответ
|