Redis學(xue)習筆(bi)記(ji)~分布鎖的使用(yong)
分布鎖主要用在多進程(cheng)共同(tong)訪(fang)問同(tong)一(yi)個資源時候,用來保持同(tong)一(yi)時間段只(zhi)能(neng)有一(yi)個進程(cheng)執行,同(tong)時避免了并發沖突的(de)出(chu)現(xian),這在很多場景都(dou)會用到,像秒(miao)殺庫(ku)存(cun),抽(chou)獎(jiang)庫(ku)存(cun),多操作(zuo)者處(chu)理一(yi)家公(gong)司等。
void TestLock() { //代碼段鎖定,只允許一下進(jin)程訪問,超時(shi)時(shi)間100秒,注(zhu)意(yi),它鎖的是key if (redisManager.Instance.GetDatabase().LockTake("redislockqueeu", "1", TimeSpan.FromMilliseconds(100))) { try { Console.WriteLine("正在處理……"); Thread.Sleep(1000); } catch (Exception) { throw; } finally { //處理結束(shu)后釋(shi)放redis進程鎖,否(fou)則還要阻塞100毫秒 redisManager.Instance.GetDatabase().LockRelease("PrizeKey", "prize"); } } Console.WriteLine("redis正(zheng)被其它進程使用"); }
你可以寫個并成的程序去(qu)測試一下,然后(hou)把它封裝一下,方便其它開發人員直接使用(yong)!
感謝閱讀!