Кэш AppFabric для Redis - эквивалент метода GetAndLock?

В настоящее время я перехожу с Microsoft AppFabric Cache на Redis в Windows. Раньше я использовал метод GetAndLock в AppFabric. Есть ли в Redis способ сделать GetAndLock? (Я использую библиотеку самородков StackExchange.Redis.StrongName).

Спасибо.


person David GROSPELIER    schedule 26.05.2016    source источник


Ответы (1)


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 и поддерживает такие функции, как блокировка/повторная попытка получения замок и автоматическое удлинение замка. (отказ от ответственности: я являюсь автором библиотеки)

person Sam    schedule 27.05.2016