黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Redis教程
Redis安裝和使用
Redis數(shù)據(jù)類型操作命令
高級(jí)話題
Jedis操作Redis

Redis事務(wù)

什么是事務(wù)

事務(wù)是指一系列操作步驟,這一系列的操作步驟,要么完全地執(zhí)行,要么完全地不執(zhí)行。

Redis  中的事務(wù)(transaction)是一組命令的集合,至少是兩個(gè)或兩個(gè)以上的命令,redis 事務(wù)保證這些命令被執(zhí)行時(shí)中間不會(huì)被任何其他操作打斷。

事務(wù)操作的命令

● multi

語(yǔ)法: multi

作用:標(biāo)記一個(gè)事務(wù)的開始。事務(wù)內(nèi)的多條命令會(huì)按照先后順序被放進(jìn)一個(gè)隊(duì)列當(dāng)中。返回值:總是返回 ok

● exec

語(yǔ)法:exec

作用:執(zhí)行所有事務(wù)塊內(nèi)的命令

返回值:事務(wù)內(nèi)的所有執(zhí)行語(yǔ)句內(nèi)容,事務(wù)被打斷(影響)返回 nil

● discard

語(yǔ)法:discard

作用:取消事務(wù),放棄執(zhí)行事務(wù)塊內(nèi)的所有命令返回值:總是返回 ok

●  watch

語(yǔ)法:watch key [key ...]

作用:監(jiān)視一個(gè)(或多個(gè)) key ,如果在事務(wù)執(zhí)行之前這個(gè)(或這些) key 被其他命令所改動(dòng), 那么事務(wù)將被打斷。

返回值:總是返回 ok

●  unwatch

語(yǔ)法:unwatch

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

返回值:總是返回 ok

事務(wù)的實(shí)現(xiàn)

● 正常執(zhí)行事務(wù)

事務(wù)的執(zhí)行步驟: 首先開啟事務(wù), 其次向事務(wù)隊(duì)列中加入命令,最后執(zhí)行事務(wù)提交

例 1:事務(wù)的執(zhí)行:

1、multi : 用 multi 命令告訴 Redis,接下來(lái)要執(zhí)行的命令你先不要執(zhí)行,而是把它們暫時(shí)存起來(lái) (開啟事務(wù))

2、sadd works john 第一條命令進(jìn)入等待隊(duì)列(命令入隊(duì))

3、sadd works rose 第二條命令進(jìn)入等待隊(duì)列(命令入隊(duì))

4、exce 告知 redis 執(zhí)行前面發(fā)送的兩條命令(提交事務(wù))

查看 works 集合

● 事務(wù)執(zhí)行 exec 之前,入隊(duì)命令錯(cuò)誤(語(yǔ)法錯(cuò)誤;嚴(yán)重錯(cuò)誤導(dǎo)致服務(wù)器不能正常工作(例如內(nèi)存不足)),放棄事務(wù)。

執(zhí)行事務(wù)步驟:

1、MULTI 正常命令

2、SET key value 正常命令

3、INCR 命令語(yǔ)法錯(cuò)誤

4、EXEC 無(wú)法執(zhí)行事務(wù),那么第一條正確的命令也不會(huì)執(zhí)行,所以 key 的值不會(huì)設(shè)置成功

結(jié)論:事務(wù)執(zhí)行 exec 之前,入隊(duì)命令錯(cuò)誤,事務(wù)終止,取消,不執(zhí)行。

● 事務(wù)執(zhí)行 exec 命令后,執(zhí)行隊(duì)列命令,命令執(zhí)行錯(cuò)誤,事務(wù)提交

執(zhí)行步驟:

1、MULTI 正常命令

2、SET username zhangsan 正常命令

3、lpop username 正常命令,語(yǔ)法沒有錯(cuò)誤,執(zhí)行命令時(shí)才會(huì)有錯(cuò)誤

4、EXEC 正常執(zhí)行 ,發(fā)現(xiàn)錯(cuò)誤可以在事務(wù)提交前放棄事務(wù),執(zhí)行 discard

結(jié)論:在 exec 執(zhí)行后的所產(chǎn)生的錯(cuò)誤, 即使事務(wù)中有某個(gè)/某些命令在執(zhí)行時(shí)產(chǎn)生了錯(cuò)誤,事務(wù)中的其他命令仍然會(huì)繼續(xù)執(zhí)行。

Redis 在事務(wù)失敗時(shí)不進(jìn)行回滾,而是繼續(xù)執(zhí)行余下的命令。

Redis 這種設(shè)計(jì)原則是:Redis 命令只會(huì)因?yàn)殄e(cuò)誤的語(yǔ)法而失?。ㄟ@些問題不能在入隊(duì)時(shí)發(fā)現(xiàn)),或是命令用在了錯(cuò)誤類型的鍵上面,失敗的命令并不是 Redis 導(dǎo)致,而是由編程錯(cuò)誤造成的,這樣錯(cuò)誤應(yīng)該在開發(fā)的過程中被發(fā)現(xiàn),生產(chǎn)環(huán)境中不應(yīng)出現(xiàn)語(yǔ)法的錯(cuò)誤。就是在程序的運(yùn)行環(huán)境中不應(yīng)該出現(xiàn)語(yǔ)法的錯(cuò)誤。而 Redis 能夠保證正確的命令一定會(huì)被執(zhí)行。再者不需要對(duì)回滾進(jìn)行支持,所以 Redis 的內(nèi)部可以保持簡(jiǎn)單且快速。

● 放棄事務(wù)

執(zhí)行步驟:

1.MULTI 開啟事務(wù)

2.SET age 25 命令入隊(duì)

3.SET age 30 命令入隊(duì)

4.DISCARD 放棄事務(wù),則命令隊(duì)列不會(huì)被執(zhí)行

例 1:

● Redis 的 watch 機(jī)制

1、Redis 的 WATCH 機(jī)制

WATCH 機(jī)制原理:

WATCH 機(jī)制:使用 WATCH 監(jiān)視一個(gè)或多個(gè) key , 跟蹤 key 的 value 修改情況, 如果有key 的 value 值在事務(wù) EXEC 執(zhí)行之前被修改了, 整個(gè)事務(wù)被取消。EXEC 返回提示信息,表示事務(wù)已經(jīng)失敗

WATCH 機(jī)制使的事務(wù) EXEC 變的有條件,事務(wù)只有在被 WATCH 的 key 沒有修改的前提下才能執(zhí)行。不滿足條件,事務(wù)被取消。使用 WATCH 監(jiān)視了一個(gè)帶過期時(shí)間的鍵, 那么即使這個(gè)鍵過期了, 事務(wù)仍然可以正常執(zhí)行

大多數(shù)情況下, 不同的客戶端會(huì)訪問不同的鍵, 相互同時(shí)競(jìng)爭(zhēng)同一 key 的情況一般都很少, 樂觀鎖能夠以很好的性能解決數(shù)據(jù)沖突的問題

2、何時(shí)取消 key 的監(jiān)視(WATCH)

① WATCH 命令可以被調(diào)用多次。 對(duì)鍵的監(jiān)視從 WATCH 執(zhí)行之后開始生效, 直到調(diào)用 EXEC 為止。不管事務(wù)是否成功執(zhí)行, 對(duì)所有鍵的監(jiān)視都會(huì)被取消。

② 當(dāng)客戶端斷開連接時(shí), 該客戶端對(duì)鍵的監(jiān)視也會(huì)被取消。

③ UNWATCH 命令可以手動(dòng)取消對(duì)所有鍵的監(jiān)視

3、 WATCH 的事例

執(zhí)行步驟:

首先啟動(dòng) redis-server , 在開啟兩個(gè)客戶端連接。 分別叫 A 客戶端 和 B 客戶端。

啟動(dòng) Redis 服務(wù)器

A 客戶端(紅色):WATCH 某個(gè) key  ,同時(shí)執(zhí)行事務(wù)

B  客戶端(黃色):對(duì) A 客戶端 WATCH 的 key 修改其 value 值。

(1)在 A 客戶端設(shè)置 key : str.lp 登錄人數(shù)為 10

(2)在 A 客戶端監(jiān)視 key : str.lp

(3)在 A 客戶端開啟事務(wù) multi

(4)在 A 客戶端修改 str.lp 的值為 11

(5)在 B 客戶端修改 str.lp 的值為 15

(6)在 A 客戶端執(zhí)行事務(wù) exec

(7)在 A 客戶端查看 str.lp 值,A 客戶端執(zhí)行的事務(wù)沒有提交,因?yàn)?WATCH 的 str.lp 的值已經(jīng)被修改了, 所有放棄事務(wù)。

例 1:樂觀鎖

 

全部教程
主站蜘蛛池模板: 欧美日韩一区二区在线视频播放 | 欧美在线观看一区 | 久久er热在这里只有精品85 | 午夜看一级特黄a大片黑 | 欧美日韩高清不卡一区二区三区 | 全免费毛片在线播放 | 97福利视频导航欧美一区 | 9久热久re爱免费精品视频 | 国产女人的一级毛片视频 | 国产精品亚洲欧美一区麻豆 | 欧美一区二区三区激情视频 | 国产精品午夜波多野结衣性色 | 日本的黄色录像 | 亚洲一片| 欧美日韩aa一级视频 | 中文字幕影院 | 我想看黄色一级片 | 国内自拍成人网在线视频 | 亚洲国产精品激情在线观看 | 日本精品影院 | 手机在线一区二区三区 | 在线色综合 | 丁香综合网 | 一区二区中文字幕在线观看 | a视频在线观看免费 | 无码日韩精品一区二区免费 | 午夜宅男宅女的免费网站 | 制服丝袜综合网 | 国内精品久久久久久西瓜色吧 | 免费的一级片 | 中文字幕一二区 | 波多野结衣中文字幕2022免费 | 日本天堂网在线 | 国内精品区一区二区三 | 国产成人精品日本亚洲18图 | 欧美18一19xxx| 欧美精品国产日韩综合在线 | 成 人在线观看视频网站 | 午夜寂寞影 | 九九精品久久 | 亚洲专区在线视频 |