redis事物詳解

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 被調用後,全部的以前被監視的鍵值會被取消監視,無論事務是否被取消或者執

行。而且當客戶端鏈接丟失的時候,全部東西都會被取消監視

相關文章
相關標籤/搜索