C#通過Redis實現分布式鎖

來源:互聯網
上載者:User

標籤:img   stat   aop   data   分享   死結   bsp   nal   thread   

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實現分布式鎖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.