傳統事務的特性
- 原子性
- 一致性
- 隔離性:事務之間互不干擾
- 持久化:一旦事務提交,無法修改
Redis事務機制
- MULTI、EXEC、DISCARD和WATCH命令是Redis事務功能的基礎。Redis事務允許在一次單獨的步驟中執行一組命令,并且可以保證如下兩個重要事項:
- Redis會將一個事務中的所有命令序列化,然后按順序執行。Redis不可能在一個Redis事務的執行過程中插入執行另一個客戶端發出的請求。這樣便能保證Redis將這些命令作為一個單獨的隔離操作執行
- 在一個Redis事務中,Redis要么執行其中的所有命令,要么什么都不執行。因此,Redis事務能夠保證原子性。EXEC命令會觸發執行事務中的所有命令
事務的用法
- MULTI (開啟)用于標記事務塊的開始
- EXEC? (執行)在一個事務中執行所有先前放入隊列的命令,然后恢復正常的連接狀態
- DISCARD (回退)清除所有先前在一個事務中放入隊列的命令,然后恢復正常的連接狀態
- WATCH 當某個事務需要按條件執行時,就要使用這個命令將給定的鍵設置為受監控的
- UNWATCH 清除所有先前為一個事務監控的鍵
- 集群狀態下支持事務,但是不支持跨節點和跨槽
操作
- 輸入命令ps -ef|grep redis查看所有的redis事務,如果redis的后年有cluster則為集群,不要選即可
- 進入一個單機版的redis客戶端,使用命令redis-cli -p 10192
- 輸入命令multi,進入事務,返回ok
- 開啟事務之后,輸入的命令會放到一個隊列,而不是立刻執行
- 輸入命令結束之后,輸入命令exec執行命令
- 會執行所有隊列里面的命令
- 而使用DISCARD,里面的命令不會執行
?