1. 程式人生 > >第九節----Redis 事務

第九節----Redis 事務

8.1  開始事務

        一個事務從開始到執行會經歷以下三個階段:

  • 開始事務。MULTI
  • 命令入隊。EXEC
  • 執行事務。

        Redis的事務有幾個特點:

        (1)單個命令原子性,即單個命令要麼執行,要麼就不執行,不會執行到一半就停止了。

        (2)多個命令中,如果某個命令出現異常,不會進行回滾。Redis將跳過這個錯誤的命令,繼續執行下面的其它命令

。可以理解為MySQL儲存過程中的,CONTINUE方式的處理程式。

        開啟事務的語法:MULTI

MULTI

8.2  新增命令

        在執行MULTI命令後,接著寫一些命令。可以寫個把錯誤的命令測試是不是將這些錯誤的命令忽略掉。

DEL  myKey

SET  myKey  myValue

DEL  mySet

SADD  mySet  valueA

SADD  mySet  valueA   # 這裡故意將重複的元素插入到mySet中,如果忽略掉此命令,那麼mySet將只有2個元素

SADD  mySet  valueB

SCARD   mySet    #檢視mySet的個數,預期為2

8.3  執行命令

         執行進棧後的所有命令,並忽略錯誤的命令。

EXEC   

         下面的圖片中展示了一個完整的事務執行流程。

         EXEC下面的是所有命令的執行結果,在最後一行中,其結果是2,符合我們在Set集合中插入三個元素,其中有兩個元素是相同的,只成功插入了一個,所以最後Set集合的個數為2

8.4  取消事務

        開始事務後,肯定也有取消事務的時候。

        取消事務語法:DISCARD

MULTI   #開啟事務

DEL   myKey   #這個事務中希望刪除myKey

DISCARD  #但是突然覺得myKey還是有用的,所以就用DISCARD  取消本次事務

GET   myKey  #再次獲取myKey,看看是不是被刪除了。結果表明沒有被刪,說明事務被成功取消。