redis支持簡單的事務操作,將redis事務與mysql事務對比:
| Mysql |
Redis |
|
| 開啟 |
start transaction |
multi |
| 語句 |
普通sql |
普通命令 |
| 失敗 |
rollback 回滾 |
discard 取消 |
| 成功 |
commit |
exec |

在mutil后面的語句中, 語句出錯可能有2種情況:
1: 語法就有問題,此時exec報錯, 所有語句得不到執行:

2: 語法本身沒錯,但適用對象有問題,Exec之后會執行正確的語句,並跳過有問題的語句.

第一條命令執行成功,第二條命令被跳過,一條出現錯誤其余正確的命令仍然可以執行,再換discard取消試試看:

mysql的rollback與redis的discard的區別:
mysql回滾為sql全部成功才執行,一條sql失敗則全部失敗,執行rollback后所有語句造成的影響消失
redis的discard只是結束本次事務,正確命令造成的影響仍然還在.
在事務中還有事務監聽命令:
watch key1 key2 ... #監聽一個或多個key
unwatch #取消所有的監聽
Redis的事務中啟用的是樂觀鎖,只負責監測key沒有被改動.如果沒變正常執行,如果有變事務取消
