Redis原始碼分析之事務

2021-06-14 07:48:01 字數 1145 閱讀 3987

redis是通過multi、discard、exec、watch四個命令來實現事務的。

事務提供了一種將多個命令打包,然後一次性並順序的執行所有命令的機制,並且事務在執行中不會主動中斷,伺服器只有在事務執行完後,才會繼續執行其他客戶端的請求。

下面是乙個事務的例子:

redis

>

multi

okredis

>

setbook

-name

"mastering c++ in 21 days"

queued

redis

>

getbook

-name

queued

redis

>

sadd

tag"c++"

"programming"

"mastering series"

queued

redis

>

smembers

tagqueued

redis

>

exec1)

ok2)"mastering c++ in 21 days"3)

(integer)3

4)1)

"mastering series"2)

"c++"3)

"programming"

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

開始事務。

命令入隊。

執行事務。

開始事務,執行multi命令,該階段只是將客戶端的事務選項開啟

當客戶端處於非事務狀態下時,所有傳送給伺服器端的命令都將立即處理並返回,但是當客戶端處於事務狀態下時,伺服器在接收到客戶端的命令時,不會立即執行,而是將這些命令放入乙個事務佇列中,並返回queued,表示命令已入隊

redis

>

multi

okredis

>

setmsg

"hello moto"

queued

redis

>

getmsg

queued

執行命令:

當執行exec命令時,將順序執行事務佇列中的命令,並向客戶端返回結果。

NHiberante原始碼分析之 事務

對資料庫的操作是少不了事務處理的,事務能保整資料完整性和有效性。在nh中,使用transaction物件對.net的事務物件 實現了idbtransaction介面的物件 進行了包裝。在nh中,乙個典型的事務處理是這樣的 見isession.cs的注釋 isession sess factory.o...

spring原始碼之事務上篇

本篇之前,已經寫過關於aop的原始碼分析,在此基礎上來閱讀事務的原始碼是比較清晰的。另外,需要對資料庫有一定的了解,我們所說是事務一般指的都是狹義的事務,即資料庫事務。文中沒有特別指出的資料庫,均指的是mysql,後面再來寫一篇關於mysql的鎖和事務的文章。事務指的是乙個程式執行單元,這個執行單元...

WebRTC原始碼分析之事件 Event

event原始碼分析 小結event類實現了事件的等待和觸發,通過介面 wait 函式可以實現執行緒的阻塞,而 set 函式可以啟用阻塞的執行緒。event類在webrtc的很多位置都有使用,理解了event類才能更好的閱讀其他webrtc原始碼。event使用示例 工程示例工程 提取碼 cenz ...