Redis 事務(wù)可以一次執(zhí)行多個(gè)命令, 并且?guī)в幸韵聝蓚€(gè)重要的保證:
事務(wù)是一個(gè)單獨(dú)的隔離操作:事務(wù)中的所有命令都會(huì)序列化蛾绎、按順序地執(zhí)行悔详。事務(wù)在執(zhí)行的過程中晰韵,不會(huì)被其他客戶端發(fā)送來的命令請(qǐng)求所打斷。
事務(wù)是一個(gè)原子操作:事務(wù)中的命令要么全部被執(zhí)行拆魏,要么全部都不執(zhí)行盯桦。
一個(gè)事務(wù)從開始到執(zhí)行會(huì)經(jīng)歷以下三個(gè)階段:
開始事務(wù)。
命令入隊(duì)渤刃。
執(zhí)行事務(wù)拥峦。
實(shí)例
以下是一個(gè)事務(wù)的例子, 它先以?MULTI?開始一個(gè)事務(wù)卖子, 然后將多個(gè)命令入隊(duì)到事務(wù)中略号, 最后由?EXEC?命令觸發(fā)事務(wù), 一并執(zhí)行事務(wù)中的所有命令:
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
127.0.0.1:6379> GET book-name
QUEUED
127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
127.0.0.1:6379> SMEMBERS tag
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
? 2) "C++"
? 3) "Programming"
Redis 事務(wù)命令
下表列出了 redis 事務(wù)的相關(guān)命令:
序號(hào)命令及描述
1洋闽、DISCARD:?取消事務(wù)玄柠,放棄執(zhí)行事務(wù)塊內(nèi)的所有命令。
2诫舅、EXEC?:執(zhí)行所有事務(wù)塊內(nèi)的命令羽利。
3、MULTI?:標(biāo)記一個(gè)事務(wù)塊的開始刊懈。
4这弧、UNWATCH:?取消 WATCH 命令對(duì)所有 key 的監(jiān)視。
5俏讹、WATCH key [key ...]:?監(jiān)視一個(gè)(或多個(gè)) key 当宴,如果在事務(wù)執(zhí)行之前這個(gè)(或這些) key 被其他命令所改動(dòng),那么事務(wù)將被打斷泽疆。