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的事務 開啟事務 ...