天天看點

Redis基本操作進階篇--事務學習

Redis中的事務(transaction)是一組指令的集合。一個事務中的指令要麼全部執行,要麼都不執行。Redis的事務沒有關系資料庫事務提供的復原(rollback)功能。

Redis通過<code>MULTI</code>标記一個事務塊的開始。事務塊内的多條指令會按照先後順序被放進一個隊列(queued)當中,最後由<code>EXEC</code>指令原子性(atomic)地執行。

Redis保證一個事務中的所有指令要麼都執行,要麼都不執行。如果<code>EXEC</code>指令之前出現錯誤,則Redis會清空事務隊列,事務中的所有指令都不執行。

此外,Redis的事務還能保證一個事務内的指令依次執行而不被其他指令插入。

Redis2.6.5之前的版本會忽略有文法錯誤的指令,然後執行事務中其它文法正确的指令。就之後版本而言,隻要有一個指令有文法錯誤,執行<code>EXEC</code>指令後,Redis就會直接傳回錯誤,不執行任何指令。

示例如下:

運作錯誤指的是在指令執行中出現的錯誤,如果Redis中出現了運作錯誤,事務中其它正确的指令會繼續執行。

<code>WATCH</code>指令用于監視一個或多個鍵 ,如果在事務執行之前監視的鍵被其他指令修改,那麼事務将被打斷。