Как заблокировать существующий ключ? - PullRequest
1 голос
/ 16 апреля 2019

Я пишу код на C # для записи на сервер Redis. Код является многопоточным, поэтому всякий раз, когда я хочу внести изменения в определенную пару ключ: значение, мне нужно заблокировать «ключ»

Я использую библиотеку StackExchange.Redis. В этой библиотеке интерфейс IDatabase расшифровывается как redis db и предоставляет методы для чтения / записи в redis. У него есть 2 связанных с блокировкой метода: bool LockTake (ключ RedisKey, значение RedisValue, срок действия TimeSpan, флаги CommandFlags = CommandFlags.None); & bool LockRelease (ключ RedisKey, значение RedisValue, флаги CommandFlags = CommandFlags.None);

Однако LockTake () может блокировать только несуществующие ключи, согласно этому сообщению: https://github.com/StackExchange/StackExchange.Redis/issues/144

Но я хочу заблокировать ключ, даже если он был создан, так как несколько потоков могут попытаться обновить его одновременно. Как я могу сделать это в C #?

...