Redis 事務可以一次執行多個命令。 常用命令: multi //開起一個事務,標記一個事務塊的開始,multi即multiple exec //執行事務塊內的命令 discard //取消事務 使用步驟: 先使用 multi命令 標記事務開始 將多個命令入隊(queue,隊列) 使用 exec ...
Redis 事務可以一次執行多個命令。
常用命令:
- multi //開起一個事務,標記一個事務塊的開始,multi即multiple
- exec //執行事務塊內的命令
- discard //取消事務
使用步驟:
- 先使用 multi命令 標記事務開始
- 將多個命令入隊(queue,隊列)
- 使用 exec 命令執行事務
示例:
multi //標記事務開始
set name "zhangsan" //依次輸入多個命令。輸入一條命令後會提示“QUEUED”,表示此條命令已入隊
set age 20
get name
exec //執行事務,會依次執行事務塊內的命令,依次顯示執行結果。
exec是執行事務,如果想取消事務,將exec換為discard即可。
單個 Redis 命令的執行是原子性的,但 Redis 並沒有在事務上增加任何維持原子性的機制,所以 Redis 事務的執行不是原子性的。
事務可以理解為一個打包的批量執行腳本,但批量指令並非原子化的操作,中間某條指令的失敗不會導致前面已做指令的回滾,也不會造成後續的指令不做。
比如執行事務時,第一條執行成功,第二條執行失敗,此時並不會回滾之前的操作(此處指第一條、第二條命令),而是繼續執行後面的命令。但會顯示第二條的結果是Fail。
即事務中任意命令執行失敗,其餘的命令依然被執行。
在事務執行過程中,其他客戶端提交的命令請求不會插入到事務執行命令隊列中。
Redis2.6以後的版本,在伺服器內置了Lua環境(Lua解釋器),可以通過eval命令執行Lua腳本。