使用StackExchange.Redis 组件操作Redis
Github:https://github.com/StackExchange/StackExchange.Redis
Nuget:https://www.nuget.org/packages/StackExchange.Redis/
var redis = RedisHelper.GetDatabase();
//获取一个锁,30秒自动释放,如果锁没获取到,1秒后继续获取
while (!redis.LockTake("lockName", "", TimeSpan.FromSeconds(30)))
{
Thread.Sleep(1000);
}
try
{
//获取到锁后执行的业务操作,操作需要在30秒内完成,不然其它线程会获取到锁,会造成数据不安全,或者把锁的过期时间设为足够大
}
catch (Exception ex)
{
}
finally
{
//业务操作完成释放锁
redis.LockRelease("lockName", "");
}