私は現在、Windows上でMicrosoft AppFabric CacheからRedisに移行しています。 これまで、私はAppFabricのGetAndLockメソッドを使用していました。 RedisにGetAndLockを実行する方法はありますか? (私はStackExchange.Redis.StrongNameナゲットライブラリを使用しています)。AppFabric Cache to Redis - GetAndLockメソッドと同等ですか?
ありがとうございました。
私は現在、Windows上でMicrosoft AppFabric CacheからRedisに移行しています。 これまで、私はAppFabricのGetAndLockメソッドを使用していました。 RedisにGetAndLockを実行する方法はありますか? (私はStackExchange.Redis.StrongNameナゲットライブラリを使用しています)。AppFabric Cache to Redis - GetAndLockメソッドと同等ですか?
ありがとうございました。
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ライブラリーは、ディスラック・アルゴリズムを実装しています。ブロック/再試行のようなものをサポートして、ロックと自動ロック拡張を取得します。 (免責事項:私は図書館の著者です)