redis學習之redis事務

2021-10-11 03:58:57 字數 1294 閱讀 9384

redis事務的本質是一組命令的集合。事務支援一次執行多個命令,乙個事務中所有命令都會被序列化。在事務執行過程中,會按照順序序列化執行佇列中的命令,其他客戶端提交的命令請求不會插入到事務執行命令序列中。

總結來說:redis事務就是一次性、順序性、排他性的執行乙個佇列中的一系列命令。

批量操作在傳送exec命令前被放入佇列快取,並不會被實際執行,也就不存在事務內的查詢要看到事務裡的更新,事務外查詢不能看到。

redis中,單條命令是原子性執行的,但事務不保證原子性,且沒有回滾。事務中任意命令執行失敗,其餘的命令仍然會被執行。

例項:

以multi開始乙個事務,然後將多個命令入隊到事務中,最後由exec命令觸發事務,一併執行事務中的所有命令:

redis 127.0.0.1:6379> multi

okredis 127.0.0.1:6379> set book-name "mastering c++ in 21 days"

queued

redis 127.0.0.1:6379> get book-name

queued

redis 127.0.0.1:6379> sadd tag "c++" "programming" "mastering series"

queued

redis 127.0.0.1:6379> smembers tag

queued

redis 127.0.0.1:6379> exec

1) ok

2) "mastering c++ in 21 days"

3) (integer) 3

4) 1) "mastering series"

2) "c++"

3) "programming"

單個redis命令的執行是原子性的,但是redis沒有在事務上增加任何維持原子性的機制,所以redis事務的執行並不是原子性的。事務可以理解為乙個打包的批量執行指令碼,但批量指令並非原子化的操作,中間某條指令的失敗不會導致前面已經做過的指令的回滾,也不會造成後續指令不做。

序號命令

命令描述

1discard

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

2exec

執行所有事務塊內的命令

3multi

標記乙個事務塊的開始

4unwatch

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

5watch key [key...]

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

redis學習之redis事務

redis的事務可以一次執行多個命令,本質是一組命令的集合。乙個事務中所有的命令都會被序列化,按順序序列執行且不會被其它命令插入。redis的事務分為3個階段,分別是開始事務 命令入隊 執行事務。multi 標記乙個事務塊的開始 exec 執行事務塊內的所有命令 discard 取消事務,放棄執行事...

Redis 原始碼學習之 Redis 事務Nosql

redis事務提供了一種將多個命令請求打包,然後一次性 按照順序地執行多個命令的機制,並且在事務執行的期間,伺服器不會中斷事務而去執行其他不在事務中的命令請求,它會把事務中所有的命令都執行完畢才會去執行其他的命令。howredis中提供了multi discard exec watch unwatc...

Redis學習筆記 Redis事務

redis事務可以一次執行多個命令 按順序地序列執行,執行中不會被其他命令插入,不許加塞 1.簡介 redis事務可以一次執行多個命令 允許在一次單獨的步驟中執行一組命令 特徵 1 批量操作在傳送exec命令前被放入佇列快取 2 收到exec命令後進入事務執行,事務中任意命令執行失敗,其餘的命令依然...