redis事務有什么用

redis事務有什么用

redis事務

MULTI, EXEC, DISCARD and WATCH 是Redis事務的基礎。用來顯式開啟并控制一個事務,它們允許在一個步驟中執行一組命令。并提供兩個重要的保證:

● 事務中的所有命令都會被序列化并按順序執行。在執行Redis事務的過程中,不會出現由另一個客戶端發出的請求。這保證 命令隊列 作為一個單獨的原子操作被執行。

● 隊列中的命令要么全部被處理,要么全部被忽略。EXEC命令觸發事務中所有命令的執行,因此,當客戶端在事務上下文中失去與服務器的連接,

? ? ●?如果發生在調用MULTI命令之前,則不執行任何commands;

? ? ●?如果在此之前EXEC命令被調用,則所有的commands都被執行。

同時,redis使用AOF(append-only file),使用一個額外的write操作將事務寫入磁盤。如果發生宕機,進程奔潰等情況,可以使用redis-check-aof tool 修復append-only file,使服務正常啟動,并恢復部分操作。(推薦:《Redis視頻教程》)

用法

使用MULTI命令顯式開啟Redis事務。 該命令總是以OK回應。此時用戶可以發出多個命令,Redis不會執行這些命令,而是將它們排隊。EXEC被調用后,所有的命令都會被執行。而調用DISCARD可以清除事務中的commands隊列并退出事務。

以下示例以原子方式,遞增鍵foo和bar。

>MULTI OK >INCR?foo QUEUED >INCR?bar QUEUED >EXEC 1)(整數)1 2)(整數)1

從上面的命令執行中可以看出,EXEC返回一個數組,其中每個元素都是事務中單個命令的返回結果,而且順序與命令的發出順序相同。?

當Redis連接處于MULTI請求的上下文中時,所有命令將以字符串QUEUED(從Redis協議的角度作為狀態回復發送)作為回復,并在命令隊列中排隊。只有EXEC被調用時,排隊的命令才會被執行,此時才會有真正的返回結果。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享