文章出處

回到目錄

redis客戶端驅動有很多,如ServiceStack.Redis,StackExchange.Redis等等,下面我使用ServiceStack.Redis為例,介紹一下在redis驅動中實現并發鎖的方式,并發就是多線程同時訪問和操作同一個資源,而對于redis來說,如果你多個線程共同修改一個key的value,這時就會出現并發,為了保證數據完整性,這時需要使用并發鎖,在各大語言中,都有自己的實現方法,無論的C,C#,java還是sqlserver都有這個概念!

      using (IRedisClient RClient = Lind.DDD.RedisClient.RedisManager.GetClient())
            {
                RClient.Add("zzlKey", 1);
                // 支持IRedisTypedClient和IRedisClient
                using (RClient.AcquireLock("lock"))
                {
                    Console.WriteLine("并發鎖");
                    var counter = RClient.Get<int>("zzlKey");
                    RClient.Set("zzlKey", counter + 1);
                    Console.WriteLine(RClient.Get<int>("mykey"));
            Thread.Sleep(1000); } }

上面代碼只是簡單實現了并發鎖的功能,處理過程是先向redis服務端申請一把鎖lock,然后再發指令,我們知道using的作用是作用域的概念,即你的鎖在using以后,將會被釋放.

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()