我目前正在从Microsoft AppFabric Cache迁移到Windows上的Redis。过去,我使用的是AppFabric的GetAndLock方法。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算法,并支持阻塞/重试以获得锁和自动锁扩展等功能。(免责声明:我是图书馆的作者)