redis事務(wù)

1.簡(jiǎn)述

Redis事務(wù)是一個(gè)單獨(dú)的隔離操作:事務(wù)中的所有命令都會(huì)序列化、按順序地執(zhí)行兰迫。事務(wù)在執(zhí)行的過(guò)程中匹耕,不會(huì)被其他客戶端發(fā)送來(lái)的命令請(qǐng)求所打斷责掏;Redis事務(wù)的主要作用就是串聯(lián)多個(gè)命令防止別的命令插隊(duì)
總結(jié)說(shuō):redis事務(wù)就是一次性轩拨、順序性践瓷、排他性的執(zhí)行一個(gè)隊(duì)列中的一系列命令。

2.Multi亡蓉、Exec晕翠、Discard指令

從輸入 Multi命令開(kāi)始,輸入的命令都會(huì)依次進(jìn)入命令隊(duì)列中砍濒,但不會(huì)執(zhí)行淋肾,直到輸入Exec后,Redis會(huì)將之前的命令隊(duì)列中的命令依次執(zhí)行爸邢。組隊(duì)的過(guò)程中可以通過(guò)discard來(lái)放棄組隊(duì)樊卓。

image.png

(1)正常事務(wù)執(zhí)行
正常事務(wù)
(2)放棄事務(wù)執(zhí)行
放棄事務(wù)
(3)若在事務(wù)隊(duì)列中存在命令性錯(cuò)誤(類似于java編譯性錯(cuò)誤),則執(zhí)行EXEC命令時(shí)杠河,所有命令都不會(huì)執(zhí)行
事務(wù)命令錯(cuò)誤時(shí)
(4)若在事務(wù)隊(duì)列中存在語(yǔ)法性錯(cuò)誤(類似于java的1/0的運(yùn)行時(shí)異常)简识,則執(zhí)行EXEC命令時(shí),其他正確命令會(huì)被執(zhí)行感猛,錯(cuò)誤命令拋出異常七扰。
image.png

3.悲觀鎖

悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀陪白,每次去拿數(shù)據(jù)的時(shí)候都認(rèn)為別人會(huì)修改颈走,所以每次在拿數(shù)據(jù)的時(shí)候都會(huì)上鎖,這樣別人想拿這個(gè)數(shù)據(jù)就會(huì)block直到它拿到鎖咱士。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)里邊就用到了很多這種鎖機(jī)制立由,比如行鎖,表鎖等序厉,讀鎖锐膜,寫鎖等,都是在做操作之前先上鎖弛房。

悲觀鎖

4.樂(lè)觀鎖

樂(lè)觀鎖(Optimistic Lock), 顧名思義道盏,就是很樂(lè)觀,每次去拿數(shù)據(jù)的時(shí)候都認(rèn)為別人不會(huì)修改,所以不會(huì)上鎖荷逞,但是在更新的時(shí)候會(huì)判斷一下在此期間別人有沒(méi)有去更新這個(gè)數(shù)據(jù)媒咳,可以使用版本號(hào)等機(jī)制樂(lè)觀鎖適用于多讀的應(yīng)用類型种远,這樣可以提高吞吐量涩澡。Redis就是利用這種check-and-set機(jī)制實(shí)現(xiàn)事務(wù)的。

樂(lè)觀鎖

5.使用watch

在執(zhí)行multi之前坠敷,先執(zhí)行watch key1 [key...],可以監(jiān)視一個(gè)(或多個(gè)) key 妙同,如果在事務(wù)執(zhí)行之前這個(gè)(或這些) key 被其他命令所改動(dòng),那么事務(wù)將被打斷膝迎。
驗(yàn)證:首先開(kāi)啟兩個(gè)redis客戶端渐溶,客戶端1和客戶端2
客戶端1,注意此時(shí)先不要exec執(zhí)行

127.0.0.1:6379> set number 10
OK
127.0.0.1:6379> watch number
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set number 100
QUEUED
127.0.0.1:6379(TX)> get number
QUEUED
127.0.0.1:6379>

客戶端2

127.0.0.1:6379> set number 500
OK

客戶端1

127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get number
"500"

發(fā)現(xiàn)為nil,執(zhí)行未成功弄抬,獲取的值為客戶端2修改后的值茎辐。

6.unwatch

取消 WATCH命令對(duì)所有 key 的監(jiān)視,如果在執(zhí)行WATCH命令之后掂恕,EXEC 命令或DISCARD 命令先被執(zhí)行了的話拖陆,那么就不需要再執(zhí)行UNWATCH了。

7.Redis事務(wù)三特性

  1. 單獨(dú)的隔離操作
    • 事務(wù)中的所有命令都會(huì)序列化懊亡、按順序地執(zhí)行依啰。事務(wù)在執(zhí)行的過(guò)程中,不會(huì)被其他客戶端發(fā)送來(lái)的命令請(qǐng)求所打斷店枣。
  2. 沒(méi)有隔離級(jí)別的概念
    • 隊(duì)列中的命令沒(méi)有提交之前都不會(huì)實(shí)際被執(zhí)行速警,因?yàn)槭聞?wù)提交前任何指令都不會(huì)被實(shí)際執(zhí)行
  3. 不保證原子性
    • 事務(wù)中如果有一條命令執(zhí)行失敗,其后的命令仍然會(huì)被執(zhí)行鸯两,沒(méi)有回滾

參考:http://doc.redisfans.com/transaction/exec.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闷旧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子钧唐,更是在濱河造成了極大的恐慌忙灼,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钝侠,死亡現(xiàn)場(chǎng)離奇詭異该园,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)帅韧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門里初,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人忽舟,你說(shuō)我怎么就攤上這事双妨』床” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵斥难,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我帘饶,道長(zhǎng)哑诊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任及刻,我火速辦了婚禮镀裤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缴饭。我一直安慰自己暑劝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布颗搂。 她就那樣靜靜地躺著担猛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丢氢。 梳的紋絲不亂的頭發(fā)上傅联,一...
    開(kāi)封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音疚察,去河邊找鬼蒸走。 笑死,一個(gè)胖子當(dāng)著我的面吹牛貌嫡,可吹牛的內(nèi)容都是我干的比驻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岛抄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼别惦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起夫椭,我...
    開(kāi)封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤步咪,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后益楼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體猾漫,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年感凤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悯周。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陪竿,死狀恐怖禽翼,靈堂內(nèi)的尸體忽然破棺而出屠橄,到底是詐尸還是另有隱情,我是刑警寧澤闰挡,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布锐墙,位于F島的核電站,受9級(jí)特大地震影響长酗,放射性物質(zhì)發(fā)生泄漏溪北。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一夺脾、第九天 我趴在偏房一處隱蔽的房頂上張望之拨。 院中可真熱鬧,春花似錦咧叭、人聲如沸蚀乔。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吉挣。三九已至,卻和暖如春婉弹,著一層夾襖步出監(jiān)牢的瞬間听想,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工马胧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汉买,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓佩脊,卻偏偏與公主長(zhǎng)得像蛙粘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子威彰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容