Redis 事務的ACID(爲什麼是半原子性,特定持久化)

背景

在傳統的關係式數據庫中,常常用ACID性質來檢驗功能的可靠性和安全性。

在Redis中,事務總是具有原子性(Atomicity)、一致性(Consistency)和隔離性(Isolation),並且當Redis運行在某種特定的持久化模式下,事務也具有持久性(Durability)

原子性

對於Redis的事務功能來說,事務隊列中的命令要麼全部執行,要麼一個都不執行,但是不同於關係型數據庫事務,Redis不支持事務回滾機制(rollback),即使事務隊列中的某個命令在執行期間出現了錯誤,整個事務也會繼續執行下去,知道將事務隊列中的所有命令執行完畢,因此Redis的原子性也有被稱做半原子性。

注:Redis不支持事務回滾作者解釋如下:

因爲這種複雜的功能和Redis追求簡單高效的設計主旨不相符合,並且,Redis事務的執行時錯誤通常都是編程錯誤產生的,這種錯誤通常只會出現在開發環境中,很少會在實際的生成環境中出現,所有認爲沒有必要爲Redis開發事務回滾功能

一致性

Redis通過謹慎的錯誤檢測和簡單的設計來保證事務的一致性,主要分爲:入隊錯誤、執行錯誤、服務器停機錯誤

隔離性

Redis中使用單線程的方式來執行事務(以及事務隊列中的命令),並且服務器保證,在執行事務期間不會對事務中斷,因此,Redis的事務總是以串行的方式運行的,並且事務也總是具有隔離性

持久性

Redis的事務並沒有提供額外的持久化功能,但是如果服務器開啓了RDB和AOF持久化,那麼就保證了特定條件下的持久化操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章