Redis(八)事務的基本操作

2021-10-06 00:09:12 字數 2237 閱讀 6232

事務的本質:一組命令一塊兒執行,乙個事務中的所有命令都會被序列化:在事務執行的過程中,都會按順序執行

一次性、順序性、排他性!執行一系列命令!

---- 佇列 set

setset ----

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

redis沒有事務隔離級別的概念

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

redis的事務:

正常執行事務

127.0.0.1:6379[1]

> multi # 開啟事務

ok127.0.0.1:6379[1]

> mset huang:name huang huang:ago 20 huang:*** man

queued

127.0.0.1:6379[1]

> mget huang:name huang:ago huang:***

queued

127.0.0.1:6379[1]

>

exec

# 執行命令

okhuang

20man

取消事務

127.0.0.1:6379[1]

> multi # 開啟事務

ok127.0.0.1:6379[1]

>

set k4 v4

queued

127.0.0.1:6379[1]

> discard # 取消事務

ok127.0.0.1:6379[1]

> get k4 # 不執行

(nil)

錯誤

編譯型異常(命令有錯)

127.0.0.1:6379[1]

> multi

ok127.0.0.1:6379[1]

>

set huang:name 黃

queued

127.0.0.1:6379[1]

> get huang:name

queued

127.0.0.1:6379[1]

>

set huang:*** man huang:ago 20

queued

127.0.0.1:6379[1]

> get huang:*** huang:ago # mget,所以錯了,報錯!

err wrong number of arguments for

'get'

command

127.0.0.1:6379[1]

> mget huang:*** huang:ago # 事務會繼續

queued

127.0.0.1:6379[1]

>

exec

# 執行的時候===所有命令===無法執行成功

execabort transaction discarded because of previous errors.

執行時異常

127.0.0.1:6379[1]

>

set k1 v1

ok127.0.0.1:6379[1]

> multi

ok127.0.0.1:6379[1]

> incr k1 # 字串,沒辦法自增

queued

127.0.0.1:6379[1]

>

set k2 v2

queued

127.0.0.1:6379[1]

>

set k3 v3

queued

127.0.0.1:6379[1]

> get k3

queued

127.0.0.1:6379[1]

>

exec

# 雖然有一條命令報錯了,但是後面的命令依然執行成功!!

1)(error) err value is not an integer or out of range

2) ok

3) ok

4)"v3"

Redis 基本的事務操作

事務有 a c i d 原則 redis事務本質 一組命令的集合!乙個事務中的所有命令都會被序列化,在事務執行過程中,會按照順序執行!一次性 順序性 排他性,執行一系列的命令 redis事務沒有隔離級別的概念!所有的命令在事務中,並沒有直接被執行!只有發起執行命令的適合才會執行!exec redis...

(八)Redis事務與連線操作

事務 multi 標記乙個事務塊的開始。事務塊內的多條命令會按照先後順序被放進乙個佇列當中,最後由exec命令原子性地執行 exec 執行所有事務塊內的命令 descard 取消事務,放棄執行事務塊內的所有命令 watch 監視乙個 或多個 key,如果在事務執行之前,這個 或這些 key被其他命令...

Redis的基本事務操作

事務 redis事務本質 一組命令的集合!乙個事務中的所有命令都會被序列化,在事務執行過程中,會按順序執行 一次性 順序性 排他性!執行一系列的命令 佇列 set set set 執行 redis事務沒有隔離級別的概念 所有的命令在事務中,並沒有直接被執行,只有發起執行命令的時候才會執行!exec ...