Redis中的事務就是一組命令的集合,被依次順序的執行,固然你能夠放棄事務的執
數據庫
行,那麼全部事務裏面的命令都不會執行。架構
關於Redis的事務有幾點說明:線程
1:Redis的事務僅僅是保證事務裏的操做會被連續獨佔的執行,由於是單線程架構,在執行完隊列
事務內全部指令前是不可能再去同時執行其餘客戶端的請求的事務
2:Redis的事務沒有隔離級別的概念,由於事務提交前任何指令都不會被實際執行,也就不存開發
在」事務內的查詢要看到事務裏的更新,在事務外查詢不能看到」這種問題了監控
3:Redis的事務不保證原子性,也就是不保證全部指令同時成功或同時失敗,只有決定是否開語法
始執行所有指令的能力,沒有執行到一半進行回滾的能力請求
Redis事務的基本過程nw
1:發送一個事務的命令給Redis,命令是multi
2:依次發送要執行的命令給Redis,Redis接到這些命令,並不會當即執行,而是放到等待執
行的事務隊列裏面
3:發送執行事務的命令給Redis,命令是exec
4:Redis會保證一個事務內的命令依次執行,而不會被其它命令插入
事務過程當中的錯誤處理
1:若是任何一個命令語法有錯,Redis會直接返回錯誤,全部的命令都不會執行
2:若是某個命令執行錯誤,那麼其它的命令仍然會正常執行,而後在執行後返回錯誤信息
3:Redis不提供事務回滾的功能,開發者必須在事務執行出錯後,自行恢復數據庫狀態
事務操做的基本命令
1:multi:設置事務開始
2:exec:執行事務
3:discard:放棄事務
4:watch:監控鍵值,若是鍵值被修改或刪除,後面的一個事務就不會執行
5:unwatch:取消watch
Watch說明
1:Redis使用Watch來提供樂觀鎖定,相似於CAS(Check-and-Set)
2:WATCH 能夠被調用屢次
3:當EXEC 被調用後,全部的以前被監視的鍵值會被取消監視,無論事務是否被取消或者執
行。而且當客戶端鏈接丟失的時候,全部東西都會被取消監視