分布式系统中,原子执行一段代码,比如减库存
RedisValue token = Environment.MachineName;
//lock_key表示的是redis数据库中该锁的名称,不可重复。
//token用来标识谁拥有该锁并用来释放锁。
//TimeSpan表示该锁的有效时间。10秒后自动释放,避免死锁。
if (db.LockTake("lock_key", token, TimeSpan.FromSeconds(10)))
{
try
{
//TODO:开始做你需要的事情
Thread.Sleep(5000);
}
finally
{
db.LockRelease("lock_key", token);//释放锁
}
}