Redis 的事務機制
Redis支持事務機制,其主要目的是確保多個命令執行的原子性,即這些命令會作為一個不可分割的操作單元執行。
需要注意的是,Redis事務不支持回滾操作。從Redis 2.6.5版本開始,服務器會在命令累積階段檢測錯誤。在執行EXEC命令時,若發現錯誤則會拒絕執行事務并返回錯誤信息,同時丟棄該事務。當事務執行過程中發生錯誤時,Redis會繼續執行剩余命令而非回滾整個事務。
對于EXEC之后發生的錯誤,Redis不會特殊處理:即使事務中有命令執行失敗,其他命令仍會繼續執行。
參考官方文檔:
https://redis.io/docs/latest/develop/using-commands/transactions/
關于原子性的補充說明
Lua腳本的原子性具有雙重特性:在并發層面保證執行的不可分割性(原子性),但在數據庫層面不滿足ACID原子性(不保證操作全部成功或回滾)。Lua作為一種高效、輕量級的跨平臺腳本語言,適合嵌入應用程序擴展功能。雖然在單機Redis中能實現原子操作,但在集群環境下存在使用限制。
參考: