樂觀鎖:這個(gè)世界是美好的,別人肯對(duì)不會(huì)在我操作數(shù)據(jù)前進(jìn)行更改琳彩。在redis中,樂觀鎖指的是只是對(duì)key上鎖露乏,只要key不變就代表不會(huì)出問題。redis中的事務(wù)multi默認(rèn)使用樂觀鎖箱锐,這將會(huì)導(dǎo)致一個(gè)問題:在秒殺這種高并發(fā)環(huán)境下猾骡,容易造成超賣問題。如兴想,在一件商品只剩一件時(shí),這時(shí)A用戶開啟事務(wù)只準(zhǔn)備搶購嫂便,而就在A完成事務(wù)之前,B用戶已經(jīng)搶了這件商品岸售,當(dāng)A完成事務(wù)后厂画,庫存數(shù)量為-1凸丸。為了解決這個(gè)問題袱院,可以引進(jìn)悲觀鎖。
悲觀鎖:這個(gè)世界一切東西都是不可信的腻惠。在redis中欲虚,悲觀鎖指的是對(duì)數(shù)據(jù)key和都value都上鎖集灌,只要這個(gè)數(shù)據(jù)有一點(diǎn)小改動(dòng)复哆,事務(wù)將失敗腌零。因此上面的秒殺活動(dòng)续誉,在開啟事務(wù)前,可對(duì)庫存上鎖:watch酷鸦,只要在這個(gè)watch之后牙咏,別的進(jìn)程或線程對(duì)這個(gè)庫存有修改,本線程的事務(wù)將不會(huì)執(zhí)行成功妄壶。