您好,登錄后才能下訂單哦!
1.redis事務相關命令
MULTI:
? ? ? ? ? ? ?MULTI命令用于開啟redis事務,MULTI會把執行該命令的客戶端從非事務態轉變為事務態,并且這個命令的返回值永遠是OK。
EXEC:
? ? ? ? ? ? ?EXEC命令用于執行事務中所有先前排隊的命令,并將連接狀態恢復為正常。服務端會順序執行事務中的命令,并且把所有的命令的結果放在數組中返回給客戶端,數組中的每個元素都是對原子事務中每個命令的回復。
WATCH:
? ? ? ? ? ? ?WATCH命令主要用于實現樂觀鎖即CAS(我后面會寫一篇介紹CAS算法的文章),被WATCH的key的值如果在事務執行時如果被其他客戶端修改了的話,服務端會直接拒絕事務執行,并返回代表失敗的空恢復(nil),即EXEC命令會返回null空值。
DISCARD:
? ? ? ? ? ? DISCARD命令用于放棄事務,如果服務端在接收到DISCARD命令后收到客戶端的EXEC命令也不會執行事務。此命令返回值永遠是OK
UNWATCH
? ? ? ? ? ?UNWATCH命令會刷新之前的事務的所有WATCH KEY的操作,如果調用EXEC或者DISCARD,則不需要手動調用UNWATCH。此命令返回值永遠是OK
2.redis事務的執行過程
?
? ? (1).開啟事務
? ? ? ? ? ?通過MULTI命令開始事務,MULTI命令把執行該命令的客戶端從非事務狀態改變為事務狀態。
? ? ? (2).命令入隊
? ? ? ? ? 開啟事務后,客戶端給服務端發送的命令并不會立刻執行,服務端會將這些命令放入一個事務的隊列,并同時返回給客戶端QUEUED
? ? ? (3).事務執行
? ? ? ? ? 客戶端給服務端發送EXEC命令后,服務端事務隊列中的任務將會順序執行,并返回一個數組,數組中的元素是每個命令執行的結果。
3.redis事務的特性
? ? ? 我們都知道數據庫事務的特性ACID,那么redis滿足ACID的特性嗎?
? ? ? A:原子性
? ? ? ? ? 數據庫的原子性是指一個事務要么全部執行,要么不執行
? ? ? ? ? ?redis事務是原子性的,事務隊列中的命令要么全部成功,要么全部放棄。但是如果某個命令執行出錯,是不會影響其他命令的執行的,這個在redis官方給出的解釋中是認為只有在使用錯誤的語法或者使用了錯誤的數據類型的key時redis命令才會失敗,并且命令在排隊期間也沒有檢測到錯誤。另外也是因為redis官方覺得redis如果支持事務回滾的話會讓redis變得很復雜。
? ? ?C:一致性
http://www.chacha8.cn/detail/1132398239.html
? ? ? ? ? ?數據庫的一致性指事務的運行并不改變數據庫中數據的一致性。
? ? ? ? ? ?redis也支持一致性:
? ? ? ? ? ?事務開啟后,命令入隊列時如果發生錯誤的話,不會返回給客戶端QUEUED,客戶端可以通過這種方法判斷是否錯誤,從而調用DISCARD命令放棄事務。如果客戶端此時仍然發送了EXEC命令的話,redis服務端也會拒絕執行,從而保證一致性。
? ? ? ? ? ?在執行時如果某一個命令發生錯誤時,其他命令會正常執行,從而保證一致性。
? ? ? ? ? ?服務器宕機時,由于redis的數據存放在內存中,此時內存中的數據會全部丟失,也保證了一致性
? ? ?I:隔離性
? ? ? ? ? 數據庫的隔離性是指兩個以上的事務不會出現交錯執行的狀態。因為這樣可能會導致數據不一致。
? ? ? ? ? ?redis是單線程的,并且redis保證事務執行過程中不會被終端,所以redis也是支持隔離性的
? ? D:持久性
鄭州不孕不育醫院哪好:http://wapyyk.39.net/zz3/zonghe/1d427.html
? ? ? ? ?數據庫事務的持久性是指事務執行成功以后,該事務對數據庫所作的更改便是持久的保存在數據庫之中,不會無緣無故的回滾。
? ? ? ? ?redis在無持久化的內存模式下是不支持持久性的,但是redis又提供兩種持久化機制:AOF、RBD。RBD在滿足特定條件下才會執行BGSAVE,所以也不具備持久性,而AOF模式下appendfsync為always時redis具有持久性。
4.redis事務解析總結
redis事務的執行過程:watch監聽指定的Key,MULTI開啟事務,命令進入事務隊列,EXEC執行命令并返回執行結果。
redis支持數據庫的原子性、一致性、隔離性,在特定情況下才會支持持久性。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。