Redis事務(wù)執(zhí)行是三個(gè)階段:
開啟:以MULTI開始一個(gè)事務(wù)
入隊(duì):將多個(gè)命令入隊(duì)到事務(wù)中,接到這些命令并不會立即執(zhí)行,而是放到等待執(zhí)行的事務(wù)隊(duì)列里面
執(zhí)行:由EXEC命令觸發(fā)事務(wù)
當(dāng)一個(gè)客戶端切換到事務(wù)狀態(tài)之后, 服務(wù)器會根據(jù)這個(gè)客戶端發(fā)來的不同命令執(zhí)行不同的操作:
如果客戶端發(fā)送的命令為 EXEC 、 DISCARD 、 WATCH 、 MULTI 四個(gè)命令的其中一個(gè), 那么服務(wù)器立即執(zhí)行這個(gè)命令。
與此相反, 如果客戶端發(fā)送的命令是 EXEC 、 DISCARD 、 WATCH 、 MULTI 四個(gè)命令以外的其他命令, 那么服務(wù)器并不立即執(zhí)行這個(gè)命令, 而是將這個(gè)命令放入一個(gè)事務(wù)隊(duì)列里面, 然后向客戶端返回 QUEUED 回復(fù)。