背景
在傳統的關係式數據庫中,常常用ACID性質來檢驗功能的可靠性和安全性。
在Redis中,事務總是具有原子性(Atomicity)、一致性(Consistency)和隔離性(Isolation),並且當Redis運行在某種特定的持久化模式下,事務也具有持久性(Durability)
原子性
對於Redis的事務功能來說,事務隊列中的命令要麼全部執行,要麼一個都不執行,但是不同於關係型數據庫事務,Redis不支持事務回滾機制(rollback),即使事務隊列中的某個命令在執行期間出現了錯誤,整個事務也會繼續執行下去,知道將事務隊列中的所有命令執行完畢,因此Redis的原子性也有被稱做半原子性。
注:Redis不支持事務回滾作者解釋如下:
因爲這種複雜的功能和Redis追求簡單高效的設計主旨不相符合,並且,Redis事務的執行時錯誤通常都是編程錯誤產生的,這種錯誤通常只會出現在開發環境中,很少會在實際的生成環境中出現,所有認爲沒有必要爲Redis開發事務回滾功能
一致性
Redis通過謹慎的錯誤檢測和簡單的設計來保證事務的一致性,主要分爲:入隊錯誤、執行錯誤、服務器停機錯誤
隔離性
Redis中使用單線程的方式來執行事務(以及事務隊列中的命令),並且服務器保證,在執行事務期間不會對事務中斷,因此,Redis的事務總是以串行的方式運行的,並且事務也總是具有隔離性
持久性
Redis的事務並沒有提供額外的持久化功能,但是如果服務器開啓了RDB和AOF持久化,那麼就保證了特定條件下的持久化操作