文章出處
文章列表
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以后,將會被釋放.
文章列表
全站熱搜