上一篇 :7. 三種特殊資料類型
下一篇 :9. Jedis
文章目錄
- 1. 概述
- 2. 使用
-
- 2.1 基本使用
- 2.2 編譯異常
- 2.3 運作時異常
- 3. 監控
-
- 3.1 WATCH
- 3.2 UNWATCH
1. 概述
- 關系型資料庫的事務保持原子性 —— 要麼同時成功,要麼同時失敗
- Redis 的單條指令是保證原子性的,但是 Redis 的事務是不保證原子性的,且沒有隔離級别的概念
- Redis 事務的本質 : 一組指令的集合。
- 一個事務中的所有指令都會序列化,會按照順序執行。
- Redis 事務的特性 : 一次性、順序性、排他性。
2. 使用
Redis 事務的基本步驟:
- 開啟事務 :MULTI
- 指令入隊 :
- 執行事務 :EXEC
2.1 基本使用
- 開啟事務
MULTI
Redis-狂神(8. 事務)學習筆記1. 概述2. 使用3. 監控 - 指令入隊
Redis-狂神(8. 事務)學習筆記1. 概述2. 使用3. 監控 - 執行事務
EXEC
Redis-狂神(8. 事務)學習筆記1. 概述2. 使用3. 監控 -
放棄事務
重新整理一個事務中所有在排隊等待的指令,并且将連接配接狀态恢複到正常。
Redis-狂神(8. 事務)學習筆記1. 概述2. 使用3. 監控
2.2 編譯異常
- 指令有錯,在啟動的時候報錯,那麼事務中所有的指令都不會執行
2.3 運作時異常
- 如果事務隊列中有文法性錯誤(1 ÷ 0 的問題),隻有錯誤的這一條不會執行,其他指令是可以執行的
- 上面這個例子更加直覺的說明了,Redis 的事務不具有原子性的特征。
3. 監控
- 悲觀鎖 :很悲觀,覺得什麼時候都會出問題,無論做什麼都會加鎖。
- 樂觀鎖 :很樂觀,覺得什麼時候都不會出問題,是以做什麼都不加鎖,隻是在更新資料的時候檢查判斷一下版本是否改變。
- 在 MySQL 中用 Version 表示版本
- Redis 中用 WATCH
- 如果事務執行成功 Redis 監控就會自動取消
3.1 WATCH
- 監視所有被标記的 key
WATCH key [key …]
Redis-狂神(8. 事務)學習筆記1. 概述2. 使用3. 監控 - 模拟執行成功
-
模拟執行過程中資料被改
先在用戶端 1 上開啟事務,但是先不要執行
建立立一個連接配接,并修改資料Redis-狂神(8. 事務)學習筆記1. 概述2. 使用3. 監控 執行事務Redis-狂神(8. 事務)學習筆記1. 概述2. 使用3. 監控 Redis-狂神(8. 事務)學習筆記1. 概述2. 使用3. 監控
3.2 UNWATCH
- 重新整理一個事務中已被監視的所有key。
- 如果像上述例子一樣,資料在事務執行前被修改了,這種情況就需要重新整理一下監視,然後再重新監視它