艺海无涯,学无止境。欢迎一起探讨技术和人生,了解我

C#.NET中,Redis锁处理分布式及并发

使用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", "");
}