天天看點

Redis學習筆記~Redis并發鎖機制

回到目錄

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以後,将會被釋放.

作者:倉儲大叔,張占嶺,

榮譽:微軟MVP

QQ:853066980

支付寶掃一掃,為大叔打賞!

Redis學習筆記~Redis并發鎖機制