Redis事物特點和持久化方式
阿新 • • 發佈:2018-11-11
Redis的事物不支援完整的ACID,Redis雖然提供事物功能,但是Redis的事物和關係資料庫事務不可同日而語,Redis的事物只能保證隔離性和一致性(I和C),無法保證原子性和永續性(A和D),具體實現原理如下:
- 原子性
Redis事物不支援原子性,Redis不支援回滾操作,事物中間一條命令執行失敗,既不會導致前面已經執行的命令回滾,也不會中斷後面的命令的執行。
- 一致性
Redis事物能夠保證事物開始之前和事物結束以後,資料庫的完整性沒有被破壞
- 隔離性
Redis不存在多個事物的問題,因為Redis是單程序單執行緒的工作模式,這種隔離性的方式也帶來了一個隱含的問題,如果某個客戶端通過事物提交了大量的命令,那麼阻塞其他客戶端進行任何操作
- 永續性
Redis提供了兩種持久化的方式,即RDB和AOF
RDB 持久化只備份當前記憶體中的資料集,事物執行完畢時,其資料還在記憶體中,並未立即寫入磁碟,所以RDB 持久化不能保證Redis事物的永續性
AOF持久化是先執行命令,執行成功後再將命令追加到日誌檔案中,即使AOF每次執行命令後立刻將日誌檔案刷盤,也可能丟失1條命令資料,因此AOF也不能嚴格保證Redis事物的永續性