Redis事務操作

2021-10-05 10:47:37 字數 1774 閱讀 9703

事務有以下特性:

⑴ 原子性(atomicity)

原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,這和前面兩篇部落格介紹事務的功能是一樣的概念,因此事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何影響。

⑵ 一致性(consistency)

一致性是指事務必須使資料庫從乙個一致性狀態變換到另乙個一致性狀態,也就是說乙個事務執行之前和執行之後都必須處於一致性狀態。

拿轉賬來說,假設使用者a和使用者b兩者的錢加起來一共是5000,那麼不管a和b之間如何轉賬,轉幾次賬,事務結束後兩個使用者的錢相加起來應該還得是5000,這就是事務的一致性。

⑶ 隔離性(isolation)

隔離性是當多個使用者併發訪問資料庫時,比如操作同一張表時,資料庫為每乙個使用者開啟的事務,不能被其他事務的操作所干擾,多個併發事務之間要相互隔離。

即要達到這麼一種效果:對於任意兩個併發的事務t1和t2,在事務t1看來,t2要麼在t1開始之前就已經結束,要麼在t1結束之後才開始,這樣每個事務都感覺不到有其他事務在併發地執行。

關於事務的隔離性資料庫提供了多種隔離級別,稍後會介紹到。

⑷ 永續性(durability)

永續性是指乙個事務一旦被提交了,那麼對資料庫中的資料的改變就是永久性的,即便是在資料庫系統遇到故障的情況下也不會丟失提交事務的操作。

redis事務命令

序號命令以及描述

1discard 取消事務,放棄執行事務塊內的所有命令。

2exec 執行所有事務塊內的命令。

3multi 標記乙個事務塊的開始。

4unwatch 取消watch命令對所有key的監視

5watch key [key…] 監視乙個(或多個)key,如果在事務執行之前這個(或這些)key被其他命令所改動,那麼事務將被打斷。

示例**

127.0.0.1:6379> 

127.0.0.1:6379> multi

ok127.0.0.1:6379> sadd works john

queued

127.0.0.1:6379> sadd works rose

queued

127.0.0.1:6379>

exec

1)(integer) 1

2)(integer) 1

127.0.0.1:6379> smembers works

1)"rose"

2)"john"

127.0.0.1:6379>

watch示例**
//客戶端1

127.0.0.1:6379>

set login.count 10

ok127.0.0.1:6379> watch login.count

ok127.0.0.1:6379> multi

ok127.0.0.1:6379>

set login.count 11

queued

//客戶端2

127.0.0.1:6379>

127.0.0.1:6379>

set login.count 100

ok127.0.0.1:6379>

//客戶端1

127.0.0.1:6379> exec

(nil)

127.0.0.1:6379> get login.count

"100"

127.0.0.1:6379>

redis 事務操作

redis事務操作 multi 命令用於開啟乙個事務,它總是返回ok。multi 執行之後,客戶端可以繼續向伺服器傳送任意多條命令,這些命令不會立即被執行,而是被放到乙個佇列中,當 exec命令被呼叫時,所有佇列中的命令才會被執行。另一方面,通過呼叫 discard 客戶端可以清空事務佇列,並放棄執...

Redis事務操作

redis是乙個開源 bsd許可 記憶體儲存的資料結構伺服器,可用作資料庫,快取記憶體和訊息佇列 它支援字串 雜湊表 列表 集合 有序集合,位圖,hyperloglogs等資料型別。內建複製 lua指令碼 lru收回 事務以及不同級別磁碟持久化功能,同時通過redis sentinel提供高可用,通...

Redis基本事務操作

redis事務本質 一組命令的集合!乙個事務中的所有命令都會被序列化,在事務直線過程中,會按照順序執行!redis事務沒有隔離級別的概念所有的命令在事務中,並沒有直接被執行!只有發起執行命令的時候才會執行!exec redis單條命令式儲存原子性的,但是事務不保證原子性!redis的事務 開啟事務 ...