中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

Redis學習(xi)筆(bi)記(ji)~Redis并(bing)發(fa)鎖機制

回到目錄

redis客戶端驅(qu)動(dong)有(you)(you)很多(duo),如ServiceStack.Redis,StackExchange.Redis等等,下(xia)(xia)面我使用ServiceStack.Redis為(wei)例,介紹(shao)一(yi)下(xia)(xia)在redis驅(qu)動(dong)中實(shi)現并(bing)(bing)發(fa)鎖的(de)(de)方式,并(bing)(bing)發(fa)就(jiu)是多(duo)線程同(tong)(tong)時訪問和操(cao)作同(tong)(tong)一(yi)個(ge)資源,而對(dui)于redis來(lai)說,如果你多(duo)個(ge)線程共同(tong)(tong)修(xiu)改一(yi)個(ge)key的(de)(de)value,這(zhe)時就(jiu)會出現并(bing)(bing)發(fa),為(wei)了保證數據完整性,這(zhe)時需要使用并(bing)(bing)發(fa)鎖,在各大語言中,都(dou)有(you)(you)自己的(de)(de)實(shi)現方法,無論(lun)的(de)(de)C,C#,java還是sqlserver都(dou)有(you)(you)這(zhe)個(ge)概念!

      using (IRedisClient RClient = Lind.DDD.RedisClient.RedisManager.GetClient())
            {
                RClient.Add("zzlKey", 1);
                // 支持IRedisTypedClient和(he)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); }  }

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

回到目錄

posted @ 2015-12-22 11:51  張占嶺  閱讀(14477)  評論(3)    收藏  舉報