事務(wù)提供了一種將多個(gè)命令打包,然后一次性、有序地執(zhí)行的機(jī)制。
?多個(gè)命令會(huì)被入隊(duì)到事務(wù)隊(duì)列中,然后按先進(jìn)先出(FIFO)的順序執(zhí)行。
?事務(wù)在執(zhí)行過(guò)程中不會(huì)被中斷,當(dāng)事務(wù)隊(duì)列中的所有命令都被執(zhí)行完畢之后,事務(wù)才會(huì)結(jié)束。
?帶有WATCH命令的事務(wù)會(huì)將客戶端和被監(jiān)視的鍵在數(shù)據(jù)庫(kù)的watched_keys字典中進(jìn)行關(guān)聯(lián),當(dāng)鍵被修改時(shí),程序會(huì)將所有監(jiān)視被修改鍵的客戶端的REDIS_DIRTY_CAS標(biāo)志打開。
?只有在客戶端的REDIS_DIRTY_CAS標(biāo)志未被打開時(shí),服務(wù)器才會(huì)執(zhí)行客戶端提交的事務(wù),否則的話,服務(wù)器將拒絕執(zhí)行客戶端提交的事務(wù)。
?Redis的事務(wù)總是具有ACID中的原子性、一致性和隔離性,當(dāng)服務(wù)器運(yùn)行在AOF持久化模式下,并且appendfsync選項(xiàng)的值為always時(shí),事務(wù)也具有耐久性。
來(lái)源:《redis的設(shè)計(jì)與實(shí)現(xiàn)》