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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- react之事件處理React事件
- redis原始碼分析之事務Transaction(下)Redis原始碼
- Vue學習筆記之事件處理Vue筆記事件
- 【Redis 系列】redis 學習六,redis 事務處理和監控事務Redis
- Java-GUI程式設計之事件處理JavaGUI程式設計事件
- redis雪崩處理Redis
- Laravel 7使用swoole+redis每秒處理任務LaravelRedis
- Mysql之事務MySql
- Redis 如何處理大 KeyRedis
- Redis中的事務處理機制分析與總結Redis
- Spring之事務原始碼Spring原始碼
- 分散式事務處理方案,微服事務處理方案分散式
- redis的事件處理機制Redis事件
- [原創]上司經常要求你處理份外之事,如何應對?
- mysqli 事務處理MySql
- MySQL事務處理MySql
- springboot事務處理Spring Boot
- Spring 框架系列之事務管理Spring框架
- SpringBoot實戰之事務抽象Spring Boot抽象
- php redis 處理websocket聊天記錄PHPRedisWeb
- Spring Boot 2 + Redis 處理 Session 共享Spring BootRedisSession
- 【原始碼】Redis命令處理過程原始碼Redis
- Redis 實戰 —— 07. 複製、處理故障、事務及效能優化Redis優化
- 微服務的故障處理微服務
- 如何利用Redis實現延時處理Redis
- Redis 快取常見問題處理Redis快取
- Mariadb之事務隔離級別
- MySQL之事務和redo日誌MySql
- MySQL學習之事務隔離MySql
- Redis(一):服務啟動及基礎請求處理流程原始碼解析Redis原始碼
- 高手如何處理快取:SpringBoot整合Redis實現快取處理(AOP技術)!快取Spring BootRedis
- redis自學(47)批處理最佳化Redis
- redis資料丟失你怎麼處理?Redis
- Laravel 分散式事務處理Laravel分散式
- 事務處理基本概念
- PHP 多程式處理任務PHP
- MySQL面試必備三之事務MySql面試
- 分散式柔性事務之事務訊息詳解分散式
- 如何處理redis叢集中hot key和big keyRedis