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