搜尋

首頁  >  問答  >  主體

redis事務具有原子性和持久性嗎?

redis事務具有原子性和持久性嗎?

redis設計與實現 書中說:

Redis的事務總是具有ACID中的原子性、一致性和隔離性,當伺服器運行在AOF
持久化模式下,並且appendfsync選項的值為always時,事務也具有耐久性。

可看網路資料,又說redis事務不滿足原子性和持久性:

求解答~~

迷茫迷茫2773 天前789

全部回覆(2)我來回復

  • 迷茫

    迷茫2017-04-24 09:14:18

    這個主要是對redis原子性有疑問,現在已經查證,redis是不確保原子性的,事務中命令執行失敗時,是不會回滾的。

    It's important to note that even when a command fails, all the other commands in the queue are processed – Redis will not stop the processing of commands.

    回覆
    0
  • PHPz

    PHPz2017-04-24 09:14:18

    首先redis是單線程的,所以其實是沒有事務這個概念的,除非使用mutil手動的將一組命令封裝到一起作為一個整體來執行,具體如果這個整體有一條指令失敗會不會回滾可以自己做個測試。
    單線程所以每個命令都是原子性的,一致性和隔離性是針對事務來說的,redis的事務是通過將一組命令封裝到一起執行所以是隔離性的,因為阻塞了其他命令的執行,至於一致性,如果上面你做的測試會回滾那麼就是一致性的,不會滾那就不是一致性的。

    回覆
    0
  • 取消回覆