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