Redis事務操作

2021-10-14 02:39:30 字數 1529 閱讀 2839

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

事務的本質是一組命令集合,乙個事務的所有命令都會被序列化,在事務執行的過程會按照順序執行

一次性、順序性,排他性!執行一些命令!

所有的命令在事務中並沒有直接被執行,只有發起執行命令的時候才會執行。

redis 單條命令是儲存原子性的,但是事務不保證原子性!

redis的事務:

multi # 開啟事務

set k1 v1 # 不執行 # 輸出queued

set k2 v2 # 不執行 # 輸出queued

get k2 # 不執行 # 輸出queued

set k3 v3 # 不執行 # 輸出queued

exec

# 執行事務 # 輸出queued

# 輸出

# 1) ok

# 2) ok

# 3) 「v2」

# 4) ok

放棄任務(未執行的事務)

multi # 開啟事務

set k1 v1 # 不執行 # 輸出queued

set k2 v2 # 不執行 # 輸出queued

get k2 # 不執行 # 輸出queued

set k3 v3 # 不執行 # 輸出queued

discard # 取消事務,事務佇列中的命令都不會執行

錯誤:

# 編譯型異常

multi # 開啟事務

set k1 v1 # 不執行 # 輸出queued

set k2 v2 # 不執行 # 輸出queued

get k2 # 不執行 # 輸出queued

set k3 v3 # 不執行 # 輸出queued

getset k3 #錯誤命令 #輸出error 編譯型異常

set k4 v4 # 不執行 # 輸出queued

exec

# 會輸出error,所有的命令都不會執行

#執行型異常

multi # 開啟事務

set k1 v1 # 不執行 # 輸出queued

incr k1 # k1 是字串不能自增

set k2 v2 # 不執行 # 輸出queued

get k2 # 不執行 # 輸出queued

set k3 v3 # 不執行 # 輸出queued

getset k3 #錯誤命令 #輸出error 編譯型異常

set k4 v4 # 不執行 # 輸出queued

exec

# 輸出某一error,其他的命令繼續執行

redis 事務操作

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

Redis事務操作

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

Redis基本事務操作

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