首頁  >  文章  >  資料庫  >  redis事務有什麼用

redis事務有什麼用

藏色散人
藏色散人原創
2019-06-19 11:17:032834瀏覽

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被呼叫時,排隊的命令才會被執行,此時才會有真正的回傳結果。

以上是redis事務有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn