歡迎來到DIVCSS5查找CSS資料與學習DIV CSS布局技術!
Redis事務簡介
 
概述
 
事務是一個業務,也可以看成是一個邏輯工作單元,是為了保證業務的完整,數據的正確而推出的一種控制機制,原則上來講,事務必須要滿足ACID四個特性(原子性,一致性,隔離性,持久性),在多個事務
 
在并發執行,為更好保證事務的四個特性的實現,通常會對事務加鎖,Redis為了性能,采用了樂觀鎖方式進行事務控制,它使用watch命令監視給定的key,當exec(提交事務)的時候,如果監視的key從調用watch后發生過變化,則整個事務會失敗。也可以調用watch多次監視多個key。注意watch的key是對整個連接有效的,如果連接斷開,監視和事務都會被自動清除。當然exec,discard,unwatch命令都會清除連接中的所有監視。
 
基本指令
 
redis進行事務控制時,通常是基于如下指令進行實現,例如:
 
multi 開啟事務
 
exec 提交事務
 
discard 取消事務
 
watch 監控,如果監控的值發生變化,則提交事務時會失敗
 
unwatch 去掉監控
 
Redis保證一個事務中的所有命令要么都執行,要么都不執行(原子性)。如果在發送EXEC命令前客戶端斷線了,則Redis會清空事務隊列,事務中的所有命令都不會執行。而一旦客戶端發送了EXEC命令,所有的命令就都會被執行,即使此后客戶端斷線也沒關系,因為Redis中已經記錄了所有要執行的命令。
 
Redis事務控制實踐
 
exec提交事務
 
例如:模擬轉賬,tony 500,jack 200,tony轉給jack100。過程如下:
 
127.0.0.1:6379> set tony 500
 
OK
 
127.0.0.1:6379> set jack 200
 
OK
 
127.0.0.1:6379> mget tony jack
 
1) "500"
 
2) "200"
 
127.0.0.1:6379> multi #開啟事務
 
OK
 
127.0.0.1:6379(TX)> decrby tony 100 #所有指令操作會進入到隊列
 
QUEUED
 
127.0.0.1:6379(TX)> incrby jack 100
 
QUEUED
 
127.0.0.1:6379(TX)> mget tony jack
 
QUEUED 
 
127.0.0.1:6379(TX)> exec  #提交事務
 
1) (integer) 400
 
2) (integer) 300
 
3) 1) "400"
 
   2) "300"
 
127.0.0.1:6379> mget tony jack
 
1) "400"
 
2) "300"
 
127.0.0.1:6379>

如需轉載,請注明文章出處和來源網址:http://www.rs2pl.com/html/h65263.shtml

久久天天躁狠狠躁夜夜躁2020