1. 程式人生 > >C#通過Redis實現分布式鎖

C#通過Redis實現分布式鎖

rom img com 分布式鎖 ase 即使 lock sta ons

Redis有三個最基本屬性來保證分布式鎖的有效實現:

  • 安全性: 互斥,在任何時候,只有一個客戶端能持有鎖。
  • 活躍性A:沒有死鎖,即使客戶端在持有鎖的時候崩潰,最後也會有其他客戶端能獲得鎖,超時機制。
  • 活躍性B:故障容忍,只有大多數Redis節點時存活的,客戶端仍可以獲得鎖和釋放鎖。

使用StackExchange.Redis 實現起來簡單得很

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.........."); }

最後附上GitHub地址:https://github.com/xiaopotian1990/RedisDemo

技術分享

C#通過Redis實現分布式鎖