天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

4.1.3 WATCH命令介紹

發(fā)布時(shí)間:2017-01-02 17:18

  本文關(guān)鍵詞:Redis入門(mén)指南,由筆耕文化傳播整理發(fā)布。


> 其他綜合 > Redis入門(mén)指南 4.1.3 WATCH命令介紹 2013-06-14 09:53:18         我要投稿   

本文所屬圖書(shū) > Redis入門(mén)指南

本書(shū)是一本Redis的入門(mén)指導(dǎo)書(shū)籍,以通俗易懂的方式介紹了Redis基礎(chǔ)與實(shí)踐方面的知識(shí),包括歷史與特性、在開(kāi)發(fā)和生產(chǎn)環(huán)境中部署運(yùn)行Redis、數(shù)據(jù)類型與命令、使用Redis實(shí)現(xiàn)隊(duì)列、事務(wù)、復(fù)制、管道、持久化、優(yōu)化Re...  立即去當(dāng)當(dāng)網(wǎng)訂購(gòu)

我們已經(jīng)知道在一個(gè)事務(wù)中只有當(dāng)所有命令都依次執(zhí)行完后才能得到每個(gè)結(jié)果的返回值,可是有些情況下需要先獲得一條命令的返回值,然后再根據(jù)這個(gè)值執(zhí)行下一條命令。例如,介紹INCR命令時(shí)曾經(jīng)說(shuō)過(guò)使用GET和SET命令自己實(shí)現(xiàn)incr函數(shù)會(huì)出現(xiàn)競(jìng)態(tài)條件,偽代碼如下:

def incr($key)

    $value = GET $key

    if not $value

           $value = 0

    $value = $value + 1

    SET $key, $value

    return $value

肯定會(huì)有很多讀者想到可以用事務(wù)來(lái)實(shí)現(xiàn)incr函數(shù)以防止競(jìng)態(tài)條件,可是因?yàn)槭聞?wù)中的每個(gè)命令的執(zhí)行結(jié)果都是最后一起返回的,所以無(wú)法將前一條命令的結(jié)果作為下一條命令的參數(shù),即在執(zhí)行SET命令時(shí)無(wú)法獲得GET命令的返回值,也就無(wú)法做到增1的功能了。

為了解決這個(gè)問(wèn)題,我們需要換一種思路。即在 GET 獲得鍵值后保證該鍵值不被其他客戶端修改,直到函數(shù)執(zhí)行完成后才允許其他客戶端修改該鍵鍵值,這樣也可以防止競(jìng)態(tài)條件。要實(shí)現(xiàn)這一思路需要請(qǐng)出事務(wù)家族的另一位成員:WATCH。WATCH命令可以監(jiān)控一個(gè)或多個(gè)鍵,一旦其中有一個(gè)鍵被修改(或刪除),之后的事務(wù)就不會(huì)執(zhí)行。監(jiān)控一直持續(xù)到EXEC命令(事務(wù)中的命令是在EXEC之后才執(zhí)行的,所以在MULTI命令后可以修改WATCH監(jiān)控的鍵值),如:

redis> SET key 1

OK

redis> WATCH key

OK

redis> SET key 2

OK

redis> MULTI

OK

redis> SET key 3

QUEUED

redis> EXEC

(nil)

redis> GET key

"2"

上例中在執(zhí)行WATCH命令后、事務(wù)執(zhí)行前修改了key的值(即SET key 2),,所以最后事務(wù)中的命令SET key 3沒(méi)有執(zhí)行,EXEC命令返回空結(jié)果。

學(xué)會(huì)了WATCH命令就可以通過(guò)事務(wù)自己實(shí)現(xiàn)incr函數(shù)了,偽代碼如下:

def incr($key)

    WATCH $key

    $value = GET $key

     if not $value

            $value = 0

     $value = $value + 1

    MULTI

    SET $key, $value

     result = EXEC

    return result[0]

因?yàn)镋XEC命令返回值是多行字符串類型,所以代碼中使用result[0]來(lái)獲得其中第一個(gè)結(jié)果。

提示  由于WATCH命令的作用只是當(dāng)被監(jiān)控的鍵值被修改后阻止之后一個(gè)事務(wù)的執(zhí)行,而不能保證其他客戶端不修改這一鍵值,所以我們需要在EXEC執(zhí)行失敗后重新執(zhí)行整個(gè)函數(shù)。

執(zhí)行EXEC命令后會(huì)取消對(duì)所有鍵的監(jiān)控,如果不想執(zhí)行事務(wù)中的命令也可以使用UNWATCH命令來(lái)取消監(jiān)控。比如,我們要實(shí)現(xiàn)hsetxx函數(shù),作用與HSETNX命令類似,只不過(guò)是僅當(dāng)字段存在時(shí)才賦值。為了避免競(jìng)態(tài)條件我們使用事務(wù)來(lái)完成這一功能:

def hsetxx($key, $field, $value)

    WATCH $key

    $isFieldExists = HEXISTS $key, $field

    if $isFieldExists is 1

          MULTI

          HSET $key, $field, $value

          EXEC

    else

          UNWATCH

    return $isFieldExists

在代碼中會(huì)判斷要賦值的字段是否存在,如果字段不存在的話就不執(zhí)行事務(wù)中的命令,但需要使用UNWATCH命令來(lái)保證下一個(gè)事務(wù)的執(zhí)行不會(huì)受到影響。

點(diǎn)擊復(fù)制鏈接 與好友分享!回本站首頁(yè) 您對(duì)本文章有什么意見(jiàn)或著疑問(wèn)嗎?請(qǐng)到論壇討論您的關(guān)注和建議是我們前行的參考和動(dòng)力   上一篇:4.1.2 錯(cuò)誤處理 下一篇:4.2 生存時(shí)間 相關(guān)文章

4.1.3 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的查詢優(yōu)化

1.3.4 命令行工具

4.2.1 命令介紹

4.3.2 SORT命令

2.2.1 mysql命令行

3.1 圖形制作的基本命令與相關(guān)操作

3.1.1 圖形制作的基本命令

1.3.2 命令行參數(shù)

2.4.3 調(diào)用系統(tǒng)命令執(zhí)行

2.2.2 基本命令

圖文推薦

4.1.3 WATCH命令介紹

排行熱門(mén)

文章 下載 讀書(shū)

· Win2000下關(guān)閉無(wú)用端口 · 禁止非法用戶登錄綜合設(shè)置 [win9x篇] · 關(guān)上可惡的后門(mén)——消除NetBIOS隱患 · 網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng) · 潛伏在Windows默認(rèn)設(shè)置中的陷井 · 調(diào)制解調(diào)器的不安全 · 構(gòu)建Windows 2000服務(wù)器的安全防護(hù)林 · SQL Server 2000的安全配置 · Windows優(yōu)化大師注冊(cè)機(jī)源碼 · Aspcode動(dòng)畫(huà)教程 · WIN 2000服務(wù)器防止ICMP數(shù)據(jù)包攻擊教程 · 實(shí)現(xiàn)網(wǎng)絡(luò)隱身的簡(jiǎn)單方法 · 手工進(jìn)行克隆帳號(hào) · 用W32DASM破解網(wǎng)頁(yè)合并器的密碼 · 注冊(cè)表操作動(dòng)畫(huà)教程 · 冰河陷阱v1.2 · 黑客攻防技術(shù)寶典:Web實(shí)戰(zhàn)篇(第2版) · 超級(jí)網(wǎng)管員——網(wǎng)絡(luò)安全 · 代碼大全(第二版) · 軟件之道:軟件開(kāi)發(fā)爭(zhēng)議問(wèn)題剖析 · CSS插件工具箱 · CSS入門(mén)經(jīng)典(第3版) ·  · CMMI+敏捷整合開(kāi)發(fā)


  本文關(guān)鍵詞:Redis入門(mén)指南,由筆耕文化傳播整理發(fā)布。



本文編號(hào):232044

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/wenshubaike/mishujinen/232044.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶7b665***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com
国产成人精品国产亚洲欧洲| 日韩一区二区免费在线观看| 天海翼精品久久中文字幕 | 国产三级黄片在线免费看| 好吊日视频这里都是精品| 国产小青蛙全集免费看| 欧美精品久久99九九| 国产欧美韩日一区二区三区| 老司机这里只有精品视频| 日韩人妻免费视频一专区| 日韩一级毛一欧美一级乱| 亚洲av又爽又色又色| 日韩日韩欧美国产精品| 不卡视频在线一区二区三区 | 欧美午夜色视频国产精品| 久久久免费精品人妻一区二区三区| 国产无摭挡又爽又色又刺激| 插进她的身体里在线观看骚| 亚洲成人免费天堂诱惑| 亚洲第一区二区三区女厕偷拍| 免费福利午夜在线观看| 国产精品国三级国产专不卡| 久久久精品日韩欧美丰满| 日韩欧美第一页在线观看| 少妇淫真视频一区二区| 国内尹人香蕉综合在线| 欧美日韩综合综合久久久| 国产成人av在线免播放观看av| 免费精品国产日韩热久久| 国内外激情免费在线视频| 久久福利视频这里有精品| 午夜色午夜视频之日本| 国产精品成人一区二区在线| 日韩免费av一区二区三区| 国产精品香蕉在线的人| 沐浴偷拍一区二区视频| 中文字幕欧美视频二区| 亚洲专区中文字幕在线| 午夜国产精品福利在线观看| 亚洲av在线视频一区| 久久大香蕉精品在线观看|