最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis事務(wù)涉及的watch、multi等命令詳解

 更新時(shí)間:2018年10月31日 10:12:31   作者:ImClive  
這篇文章主要介紹了Redis事務(wù)涉及的watch、multi等命令,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下

Redis Watch 命令

作用:

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

 用法:

redis 127.0.0.1:6379> WATCH key1 key2

OK

Redis Unwatch 命令

作用:

 用于取消 WATCH 命令對所有 key 的監(jiān)視。

 用法:

redis 127.0.0.1:6379> UNWATCH

OK

Redis Multi 命令

作用:

 用于標(biāo)記一個(gè)事務(wù)塊的開始。事務(wù)塊內(nèi)的多條命令會(huì)按照先后順序被放進(jìn)一個(gè)隊(duì)列當(dāng)中,最后由 EXEC 命令原子性(atomic)地執(zhí)行。

 用法:

redis 127.0.0.1:6379> MULTI      # 標(biāo)記事務(wù)開始
OK
redis 127.0.0.1:6379> INCR user_id   # 多條命令按順序入隊(duì)
QUEUED
redis 127.0.0.1:6379> INCR user_id
QUEUED
redis 127.0.0.1:6379> INCR user_id
QUEUED
redis 127.0.0.1:6379> PING
QUEUED
redis 127.0.0.1:6379> EXEC       # 執(zhí)行
1) (integer) 1
2) (integer) 2
3) (integer) 3
4) PONG

利用watch實(shí)現(xiàn)incr

具體做法如下:

   WATCH mykey
   val = GET mykey
   val = val + 1
   MULTI
   SET mykey $val
   EXEC

在獲取mykey的值之前先通過WATCH命令監(jiān)控了該鍵,此后又將set命令包圍在事務(wù)中,這樣就可以有效的保證每個(gè)連接在執(zhí)行EXEC之前,如果當(dāng)前連接獲取的mykey的值被其它連接的客戶端修改,那么當(dāng)前連接的EXEC命令將執(zhí)行失敗。這樣調(diào)用者在判斷返回值后就可以獲悉val是否被重新設(shè)置成功。

注意點(diǎn):

•由于WATCH命令的作用只是當(dāng)被監(jiān)控的鍵值被修改后阻止之后一個(gè)事務(wù)的執(zhí)行,而不能保證其他客戶端不修改這一鍵值,所以在一般的情況下我們需要在EXEC執(zhí)行失敗后重新執(zhí)行整個(gè)函數(shù)。
•執(zhí)行EXEC命令后會(huì)取消對所有鍵的監(jiān)控,如果不想執(zhí)行事務(wù)中的命令也可以使用UNWATCH命令來取消監(jiān)控。

示例:

打開兩個(gè)redis-cli命令行窗口 session 1 和 session 2

session 1:
redis 127.0.0.1:6379> set test 1  # 設(shè)置test="1"
OK
redis 127.0.0.1:6379> get test   # 獲取到test的值為"1"
"1"
redis 127.0.0.1:6379> watch test  # 監(jiān)視test
OK
redis 127.0.0.1:6379> multi    # 開啟事務(wù)
OK
redis 127.0.0.1:6379> set test 2  # 將test設(shè)為"2"
QUEUED
redis 127.0.0.1:6379> exec     # 待 session 2 執(zhí)行完畢后再執(zhí)行 session 1 的exec命令,發(fā)現(xiàn)執(zhí)行失敗
(nil)
redis 127.0.0.1:6379> get test   # 獲取test的值,發(fā)現(xiàn)test值為 session 2 中所設(shè)置的"3"
"3"
redis 127.0.0.1:6379> unwatch   # 取消監(jiān)視所有key
OK
redis 127.0.0.1:6379> set test 4  # 非事務(wù)變更test的值為"4"
OK
redis 127.0.0.1:6379> get test   # 獲取到test="4"
"4"
session 2: 
redis 127.0.0.1:6379> get test  # 獲取到了 session 1 創(chuàng)建的test="1"
"1"
redis 127.0.0.1:6379> watch test # 監(jiān)視test
OK
redis 127.0.0.1:6379> multi    # 開啟事務(wù)
OK
redis 127.0.0.1:6379> set test 3 # 將test設(shè)為"3"
QUEUED
redis 127.0.0.1:6379> exec    # 執(zhí)行事務(wù)
1) OK
redis 127.0.0.1:6379> get test  # 獲取到test="3"
"3"

總結(jié)

以上所述是小編給大家介紹的Redis事務(wù)涉及的watch、multi等命令,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • redis刪除指定key的實(shí)現(xiàn)步驟

    redis刪除指定key的實(shí)現(xiàn)步驟

    本文主要介紹了redis刪除指定key的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Redis中的bitmap詳解

    Redis中的bitmap詳解

    BitMap是通過一個(gè)bit位來表示某個(gè)元素對應(yīng)的值或者狀態(tài),其中的key就是對應(yīng)元素本身。我們知道8個(gè)bit可以組成一個(gè)Byte,所以bitmap本身會(huì)極大的節(jié)省儲(chǔ)存空間,下面通過本文給大家介紹Redis中的bitmap知識,感興趣的朋友一起看看吧
    2021-10-10
  • redis延時(shí)隊(duì)列的項(xiàng)目實(shí)踐

    redis延時(shí)隊(duì)列的項(xiàng)目實(shí)踐

    本文主要介紹了redis延時(shí)隊(duì)列的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • redis中使用java腳本實(shí)現(xiàn)分布式鎖

    redis中使用java腳本實(shí)現(xiàn)分布式鎖

    這篇文章主要介紹了redis中使用java腳本實(shí)現(xiàn)分布式鎖,本文同時(shí)講解了java腳本和lua腳本實(shí)現(xiàn)分布式鎖,需要的朋友可以參考下
    2015-01-01
  • Redis實(shí)現(xiàn)單設(shè)備登錄的場景分析

    Redis實(shí)現(xiàn)單設(shè)備登錄的場景分析

    這篇文章主要介紹了Redis實(shí)現(xiàn)單設(shè)備登錄,用戶首次登錄時(shí),將用戶信息存入Redis,key是用戶id,value是token,當(dāng)用戶在其他設(shè)備登錄時(shí),會(huì)重新生成token,這個(gè)時(shí)候原先的token已經(jīng)被覆蓋了,本文給大家提供樣例及核心代碼,感興趣的朋友參考下吧
    2022-04-04
  • Redis三種集群搭建配置(主從集群、哨兵集群、分片集群)

    Redis三種集群搭建配置(主從集群、哨兵集群、分片集群)

    本文主要介紹了Redis三種集群搭建配置,包括主從集群、哨兵集群、分片集群,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Redis主從復(fù)制與讀寫分離的實(shí)現(xiàn)

    Redis主從復(fù)制與讀寫分離的實(shí)現(xiàn)

    Redis在作為緩存的時(shí)候,隨著項(xiàng)目訪問量的增加,對Redis服務(wù)器的操作也越加頻繁,雖然Redis讀寫速度都很快,但是一定程度上也會(huì)造成一定的延時(shí),本文主要介紹了Redis主從復(fù)制與讀寫分離的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 詳解Redis用鏈表實(shí)現(xiàn)消息隊(duì)列

    詳解Redis用鏈表實(shí)現(xiàn)消息隊(duì)列

    Redis有兩種方式實(shí)現(xiàn)消息隊(duì)列,一種是用Redis自帶的鏈表數(shù)據(jù)結(jié)構(gòu),另一種是用Redis發(fā)布/訂閱模式實(shí)現(xiàn),這篇文章先介紹鏈表實(shí)現(xiàn)消息隊(duì)列,有需要的朋友們可以參考借鑒。
    2016-09-09
  • Redis主從架構(gòu)和高可用性實(shí)現(xiàn)過程

    Redis主從架構(gòu)和高可用性實(shí)現(xiàn)過程

    本文詳細(xì)介紹了使用Redis主從架構(gòu)和Linux虛擬服務(wù)器(LVS)實(shí)現(xiàn)高可用性的方法,并回顧了最近完成的Redis集群遷移部署過程,主從架構(gòu)通過復(fù)制數(shù)據(jù)來提高性能和數(shù)據(jù)冗余,而LVS用于實(shí)現(xiàn)負(fù)載均衡和故障切換,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Windows環(huán)境下查看、添加、修改redis數(shù)據(jù)庫的密碼兩種方式

    Windows環(huán)境下查看、添加、修改redis數(shù)據(jù)庫的密碼兩種方式

    在Windows系統(tǒng)上設(shè)置Redis密碼的過程與Linux系統(tǒng)類似,但需注意幾個(gè)關(guān)鍵步驟以確保正確配置,這篇文章主要給大家介紹了關(guān)于Windows環(huán)境下查看、添加、修改redis數(shù)據(jù)庫的密碼兩種方式,需要的朋友可以參考下
    2024-07-07

最新評論

蒲江县| 霞浦县| 宁晋县| 海城市| 涡阳县| 交口县| 长岛县| 霸州市| 宝山区| 如东县| 正阳县| 碌曲县| 伊川县| 米脂县| 九江县| 彰武县| 大宁县| 沐川县| 民勤县| 蚌埠市| 太湖县| 离岛区| 肇东市| 平乡县| 偃师市| 枣庄市| 吕梁市| 阿拉善右旗| 沙田区| 吴桥县| 长沙县| 屏南县| 都江堰市| 应城市| 石景山区| 马尔康县| 城固县| 吕梁市| 阿图什市| 武山县| 申扎县|