Redis - 事物 阿新 • • 發佈:2018-12-20 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可以很好的監控某些資料。