Redis使用WATCH命令來(lái)決定事務(wù)是繼續(xù)執(zhí)行還是回滾,那就需要在MULTI之前使用WATCH來(lái)監(jiān)控某些鍵值對(duì),然后使用MULTI命令來(lái)開啟事務(wù),執(zhí)行對(duì)數(shù)據(jù)結(jié)構(gòu)操作的各種命令,此時(shí)這些命令入隊(duì)列。
當(dāng)使用EXEC執(zhí)行事務(wù)時(shí),首先會(huì)比對(duì)WATCH所監(jiān)控的鍵值對(duì),如果沒(méi)發(fā)生改變,它會(huì)執(zhí)行事務(wù)隊(duì)列中的命令,提交事務(wù);如果發(fā)生變化,將不會(huì)執(zhí)行事務(wù)中的任何命令,同時(shí)事務(wù)回滾。當(dāng)然無(wú)論是否回滾,Redis都會(huì)取消執(zhí)行事務(wù)前的WATCH命令。