В настоящее время я перехожу с Microsoft AppFabric Cache на Redis в Windows. Раньше я использовал метод GetAndLock в AppFabric. Есть ли в Redis способ сделать GetAndLock? (Я использую библиотеку самородков StackExchange.Redis.StrongName).
Спасибо.
В настоящее время я перехожу с Microsoft AppFabric Cache на Redis в Windows. Раньше я использовал метод GetAndLock в AppFabric. Есть ли в Redis способ сделать GetAndLock? (Я использую библиотеку самородков StackExchange.Redis.StrongName).
Спасибо.
StackExchange.Redis имеет несколько методов блокировки, если вы пытаетесь защитить критический раздел кода от запуска более одного раза за раз.
if (connectionMultiplexer.GetDatabase().LockTake(key, token, duration))
{
try
{
// do stuff
}
finally
{
connectionMultiplexer.GetDatabase().LockRelease(key, token);
}
}
Существуют также методы LockExtend
и LockQuery
.
Подробнее см. https://stackoverflow.com/a/25138164/2497886.
Также стоит взглянуть на документацию Redis по распределенным блокировкам — http://redis.io/topics/distlock< /а>.
Библиотека RedLock.net реализует алгоритм distlock и поддерживает такие функции, как блокировка/повторная попытка получения замок и автоматическое удлинение замка. (отказ от ответственности: я являюсь автором библиотеки)