Redis之事務處理
事務處理。
127.0.0.1:6379> get age
"30"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set age 10
QUEUED
127.0.0.1:6379> set age 20
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
127.0.0.1:6379> get age
"20"
如何取消一個事務。
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set age 30
QUEUED
127.0.0.1:6379> set age 40
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> get age
"20"
樂觀鎖複雜事務控制。
redis樂觀鎖例項:假設有一個age的key,開2個session來對age進行賦值操作。
第一步:session1
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> watch age
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379>
第二步:session2
127.0.0.1:6379> set age 30
OK
127.0.0.1:6379> get age
"30"
127.0.0.1:6379>
第三步:session1
127.0.0.1:6379> set age 20
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get age
"30"
watch命令會監視給定的key,當exec時候如果監視的key從呼叫watch後發生過變化,則整個事務會失敗,也可以呼叫watch多次監視多個key。這樣就可以對指定的key加樂觀鎖了。注意watch的key是對整個連線有效的,事務也一樣。如果連線斷開,監視和事務都會被自動清除。當然除了exec,discard,unwatch命令都會清除連線中的所有監視。
事務回滾:如果事務中的一個命令失敗了,並不回滾其他命令。
127.0.0.1:6379> get age
"30"
127.0.0.1:6379> get name
"master"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr age
QUEUED
127.0.0.1:6379> incr name
QUEUED
127.0.0.1:6379> exec
1) (integer) 31
2) (error) ERR value is not an integer or out of range
127.0.0.1:6379> get age
"31"
127.0.0.1:6379> get name
"master"
127.0.0.1:6379> get age
"30"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set age 10
QUEUED
127.0.0.1:6379> set age 20
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
127.0.0.1:6379> get age
"20"
如何取消一個事務。
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set age 30
QUEUED
127.0.0.1:6379> set age 40
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> get age
"20"
樂觀鎖複雜事務控制。
redis樂觀鎖例項:假設有一個age的key,開2個session來對age進行賦值操作。
第一步:session1
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> watch age
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379>
第二步:session2
127.0.0.1:6379> set age 30
OK
127.0.0.1:6379> get age
"30"
127.0.0.1:6379>
第三步:session1
127.0.0.1:6379> set age 20
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get age
"30"
watch命令會監視給定的key,當exec時候如果監視的key從呼叫watch後發生過變化,則整個事務會失敗,也可以呼叫watch多次監視多個key。這樣就可以對指定的key加樂觀鎖了。注意watch的key是對整個連線有效的,事務也一樣。如果連線斷開,監視和事務都會被自動清除。當然除了exec,discard,unwatch命令都會清除連線中的所有監視。
事務回滾:如果事務中的一個命令失敗了,並不回滾其他命令。
127.0.0.1:6379> get age
"30"
127.0.0.1:6379> get name
"master"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr age
QUEUED
127.0.0.1:6379> incr name
QUEUED
127.0.0.1:6379> exec
1) (integer) 31
2) (error) ERR value is not an integer or out of range
127.0.0.1:6379> get age
"31"
127.0.0.1:6379> get name
"master"
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2143383/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- myrocks之事務處理
- react之事件處理React事件
- redis的事務處理Redis
- redis原始碼分析之事務Transaction(下)Redis原始碼
- redis原始碼分析之事務Transaction(上)Redis原始碼
- JavaScript之事件處理詳解JavaScript事件
- 【Redis 系列】redis 學習六,redis 事務處理和監控事務Redis
- Vue學習筆記之事件處理Vue筆記事件
- Java GUI之事件監聽與處理JavaGUI事件
- Java-GUI程式設計之事件處理JavaGUI程式設計事件
- Mysql之事務MySql
- Laravel 7使用swoole+redis每秒處理任務LaravelRedis
- Redis中的事務處理機制分析與總結Redis
- Redis 如何處理大 KeyRedis
- 分散式事務處理方案,微服事務處理方案分散式
- Spring之事務原始碼Spring原始碼
- redis的事件處理機制Redis事件
- [原創]上司經常要求你處理份外之事,如何應對?
- Java GUI之事件監聽與處理的匿名類實現方法JavaGUI事件
- MySQL事務處理MySql
- 12事務處理
- mysqli 事務處理MySql
- Redis 原始碼學習之事件驅動Redis原始碼事件
- Spring 框架系列之事務管理Spring框架
- MySQL學習之事務隔離MySql
- MySQL之事務和redo日誌MySql
- Spring註解之事務管理Spring
- 【原始碼】Redis命令處理過程原始碼Redis
- php redis 處理websocket聊天記錄PHPRedisWeb
- Redis 實戰 —— 07. 複製、處理故障、事務及效能優化Redis優化
- 微服務的故障處理微服務
- ITL與事務處理
- php事務處理方法PHP
- java事務的處理Java
- MYSQL--事務處理MySql
- SpringDataRedis事務處理SpringRedis
- mysql事務處理(轉)MySql
- Redis(一):服務啟動及基礎請求處理流程原始碼解析Redis原始碼