Redis 事務(wù)
Redis 事務(wù)可以一次執(zhí)行多個(gè)命令,并且?guī)в幸韵?個(gè)重要的保證:
- 批量操作在發(fā)送 EXEC 命令前被放入隊(duì)列緩存。
- 收到 EXEC 命令后進(jìn)入事務(wù)執(zhí)行,事務(wù)中任意命令執(zhí)行失敗,其余的命令依然被執(zhí)行。
- 在事務(wù)執(zhí)行過(guò)程,其他客戶端提交的命令請(qǐng)求不會(huì)插入到事務(wù)執(zhí)行命令序列中。
一個(gè)事務(wù)從開(kāi)始到執(zhí)行會(huì)經(jīng)歷以下三個(gè)階段:
- 開(kāi)始事務(wù)。
- 命令入隊(duì)。
- 執(zhí)行事務(wù)。
操作命令:
以下是一個(gè)事務(wù)的例子, 它先以 MULTI 開(kāi)始一個(gè)事務(wù), 然后將多個(gè)命令入隊(duì)到事務(wù)中, 最后由 EXEC 命令觸發(fā)事務(wù),
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
redis 127.0.0.1:6379> GET book-name
QUEUED
redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis 127.0.0.1:6379> SMEMBERS tag
QUEUED
redis 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ù)命令
命令及描述
1 DISCARD
取消事務(wù),放棄執(zhí)行事務(wù)塊內(nèi)的所有命令。
2 MULTI
標(biāo)記一個(gè)事務(wù)塊的開(kāi)始。
-- 可執(zhí)行一些其他命令
3 EXEC
執(zhí)行所有事務(wù)塊內(nèi)的命令。
4 UNWATCH
取消 WATCH 命令對(duì)所有 key 的監(jiān)視。
5 WATCH key [key ...]
監(jiān)視一個(gè)(或多個(gè)) key ,如果在事務(wù)執(zhí)行之前這個(gè)(或這些) key 被其他命令所改動(dòng),那么事務(wù)將被打斷。