溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Redis中事務(wù)管理的示例分析

發(fā)布時(shí)間:2021-11-16 13:35:04 來源:億速云 閱讀:89 作者:小新 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)Redis中事務(wù)管理的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

在Redis中我們可以通過multi和exec兩個(gè)命令來實(shí)現(xiàn)簡(jiǎn)單的事務(wù)管理。multi命令代表事務(wù)的開始,exec命令代表事務(wù)的結(jié)束,在使用時(shí)這兩個(gè)命令之間執(zhí)行的命令都是原子性的。下面我們看具體的使用。

Redis中事務(wù)管理的示例分析

我們看上圖所示知道在使用Redis事務(wù)管理時(shí),我們?cè)趍ulti和exec兩個(gè)命令之間執(zhí)行成功的命令,返回的結(jié)果是QUEUED的。這代表著命令并沒有真正的執(zhí)行,而暫時(shí)保存到Redis中。如果此時(shí)我們使用另一個(gè)客戶端獲取上圖中key時(shí),則返回的結(jié)果一定是0,因?yàn)槊畈]有執(zhí)行成功,也就是事務(wù)并沒有提交。

Redis中事務(wù)管理的示例分析

只有當(dāng)執(zhí)行exec命令時(shí),Redis中的事務(wù)才會(huì)提交。提交后我們?cè)诳蛻舳藞?zhí)行剛剛的命令,則會(huì)獲取到事務(wù)中執(zhí)行成功的數(shù)據(jù)。

Redis中事務(wù)管理的示例分析
Redis中事務(wù)管理的示例分析

如果我們想要停止事務(wù),則可以使用discard命令。

Redis中事務(wù)管理的示例分析

下面我們介紹一下在使用Redis事務(wù)時(shí)的注意事項(xiàng)。

  • 命令錯(cuò)誤:如果我們?cè)谑褂檬聞?wù)時(shí),如果執(zhí)行命令有錯(cuò)誤,則會(huì)造成事務(wù)無法提交。

  • 運(yùn)行時(shí)錯(cuò)誤:如果我們?cè)谑聞?wù)中執(zhí)行的命令本身沒有語法錯(cuò)誤時(shí),例如將sadd命令寫成了zadd命令,這種就是運(yùn)行時(shí)錯(cuò)誤了。這種錯(cuò)誤Redis會(huì)成功的將事務(wù)提交,所以遇到這種錯(cuò)誤時(shí),需要開發(fā)人員自行處理了。


在某些業(yè)務(wù)中,為了確保事務(wù)中的key沒有被其它客戶端修改過,才提交事務(wù),否則不執(zhí)行類似樂觀鎖一樣。在Redis中我們可以watch命令來解決這類問題。下面我們看一下具體操作。

  • 客戶端一:

Redis中事務(wù)管理的示例分析

客戶端二:

Redis中事務(wù)管理的示例分析

這就是Redis中事務(wù)管理的功能,它和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)中的事務(wù)相比,Redis中事務(wù)管理要簡(jiǎn)單的多,因?yàn)殛P(guān)系型數(shù)據(jù)庫(kù)中的事務(wù)支持很多復(fù)雜的邏輯計(jì)算,并且支持回滾功能。而Redis中事務(wù)管理不支持上述功能。這也是它們之間的主要區(qū)別。

關(guān)于“Redis中事務(wù)管理的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI