C#通过Redis完毕分布式锁

Redis有多个最主题属性来担保分布式锁的卓有成效落到实处:

  • 安全性: 互斥,在此外时候,唯有一个客户端能抱有锁。
  • 活跃性A:没有死锁,尽管客户端在拥有锁的时候崩溃,最终也会有其他客户端能赢得锁,超时机制。
  • 活跃性B:故障容忍,唯有半数以上Redis节点时存活的,客户端还是可以取得锁和自由锁。

利用StackExchange.Redis 落成起来大约得很

图片 1

static void Lock()
        {
            Console.WriteLine("Start..........");
            var db = _redis.GetDatabase();
            RedisValue token = Environment.MachineName;
            //实际项目秒杀此处可换成商品ID
            if (db.LockTake("test", token, TimeSpan.FromSeconds(10)))
            {
                try
                {
                    Console.WriteLine("Working..........");
                    Thread.Sleep(5000);
                }
                finally
                {
                    db.LockRelease("test", token);
                }
            }

            Console.WriteLine("Over..........");
        }

图片 2

终极附上GitHub地址:https://github.com/xiaopotian1990/RedisDemo

图片 3

 

相关文章