Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 34174|Ответ: 5

[.NET Core] .NET Core реализует распределённый принцип блокировки на основе Redis

[Скопировать ссылку]
Опубликовано 22.09.2020 9:17:22 | | | |
В бизнес-сценариях одновременное управление контентом, таким как инвентаризация товаров, один и тот же файл и т.д., не разрешено, и приложение программы разворачивается на нескольких серверах.
[Реальные бои] ASP.NET Core основан на распродаже Redis с распределёнными флэш-распродажами
https://www.itsvse.com/thread-9397-1-1.html

Ранее написанный распределённый замок на базе zk выглядит следующим образом:

.net/c# Реализация распределённого блокировки Zookeeper [исходный код]
https://www.itsvse.com/thread-4651-1-1.html

Что вам также нужно знать, чтобы прочитать эту статью:

Волатильность против блокировки против блокировки
https://www.itsvse.com/thread-5023-1-1.html

C# Параллельные вычисления Parallel.For&Parallel.For
https://www.itsvse.com/thread-3671-1-1.html

.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 году — именно то, что мы ожидали, а рендеры следующие:


На данный момент замок ещё не освобождён.
(Конец)









Предыдущий:Не удалось найти обходной путь для части пути «\bin\roslyn\csc.exe».
Следующий:EF Core Series 2 инкапсулирует OnModelCreating, создает индексы с помощью отражений и многое другое
 Хозяин| Опубликовано 26.09.2020 15:37:52 |
test123
Опубликовано 20.11.2020 11:18:31 |
Если при развертывании контейнеров есть многопоточная среда и мультиэкземплярная среда, возникает ли проблема с такой обработкой?
 Хозяин| Опубликовано 20.11.2020 11:29:44 |
Qiuyueming Опубликовано 2020-11-20 11:18
Если при развертывании контейнеров есть многопоточная среда и мультиэкземплярная среда, возникает ли проблема с такой обработкой? ...

Мульти-экземпляр означает многопоточность, и в исходном коде многопоточность вызывает redis, и только один поток получает блокировку
Опубликовано 22.03.2022 14:32:40 |
Поддержка, поддержка
Опубликовано 23.03.2022 11:15:30 |
Узнайте, что это хорошо @
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com