1. 程式人生 > >Redis - 事物

Redis - 事物

redis事物控制


關於事物

    事物(資料庫事物)是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行

redis事物與mysql事物的不同

    1.與mysql等資料庫不同,redis事物不提供回滾操作。     2.對於ACID特性:它不滿足原子性(會部分不執行)、永續性(因為redis是在記憶體中、即使開啟AOF,也存在命令執行一部分後,系統宕機而導致資料丟失的情況,不能恢復)、一致性(狀態轉移一半宕機了)。因為redis是單執行緒的,事務也是序列執行,所以滿足隔離性。
                

使用

    redis事務是基於先進先出佇列實現的,multi之後的命令放入佇列中,exec後佇列中的命令一次執行。                 multi    事務開始 
                exec     事物結束                  discard    放棄事物                  1:語法錯誤:致命的錯誤,事務中的所有命令都不會執行,即插入到佇列時出錯,佇列所有的命令就都不執行了。
                2:執行錯誤:不會影響事務中其他命令的執行,即插入佇列都成功,但從隊列出來執行時出錯,其他命令還會執行。

watch在事物中的使用

        watch命令可以multi - exec之間監控一個或多個鍵,在事物中一旦其中有一個鍵被修改(或刪除),之後的事物命令就不會執行,監控一直持續到EXEC命令。          事務中的命令是在EXEC之後才執行的,EXEC命令執行完之後被監控的鍵會自動被UNWATCH。在事物中使用watch可以很好的監控某些資料。