• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    Redis的事務(wù)操作的命令與執(zhí)行操作(代碼)

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 08:41:19
    文檔

    Redis的事務(wù)操作的命令與執(zhí)行操作(代碼)

    Redis的事務(wù)操作的命令與執(zhí)行操作(代碼):本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Redis的事務(wù)操作的命令與執(zhí)行操作(代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。序本文主要研究一下redis的事務(wù)操作命令multi與exec命令行127.0.0.1:6379> multi OK 127.0.0
    推薦度:
    導(dǎo)讀Redis的事務(wù)操作的命令與執(zhí)行操作(代碼):本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Redis的事務(wù)操作的命令與執(zhí)行操作(代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。序本文主要研究一下redis的事務(wù)操作命令multi與exec命令行127.0.0.1:6379> multi OK 127.0.0

    本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Redis的事務(wù)操作的命令與執(zhí)行操作(代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

    本文主要研究一下redis的事務(wù)操作

    命令

    multi與exec

  • 命令行

  • 127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> incr total
    QUEUED
    127.0.0.1:6379> incr len
    QUEUED
    127.0.0.1:6379> exec
    1) (integer) 2
    2) (integer) 2
    127.0.0.1:6379> get total
    "2"
    127.0.0.1:6379> get len
    "2"
  • lettuce實(shí)例

  •  @Test
     public void testMultiExec(){
     RedisClient client = RedisClient.create("redis://192.168.99.100:6379/0");
     StatefulRedisConnection<String, String> connection = client.connect();
     RedisCommands<String, String> syncCommands = connection.sync();
    
     syncCommands.set("hello","1");
     syncCommands.set("world","2");
    
     syncCommands.multi();
     syncCommands.incr("hello");
     syncCommands.incr("world");
    
     //DefaultTransactionResult[wasRolledBack=false,result=[1, 2, 1, 3, 1]]
     TransactionResult transactionResult = syncCommands.exec();
     System.out.println(transactionResult);
     System.out.println(syncCommands.get("hello"));
     System.out.println(syncCommands.get("world"));
     }

    部分執(zhí)行

  • 命令行

  • 127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set a hello
    QUEUED
    127.0.0.1:6379> set b world
    QUEUED
    127.0.0.1:6379> incr a
    QUEUED
    127.0.0.1:6379> set c part
    QUEUED
    127.0.0.1:6379> exec
    1) OK
    2) OK
    3) (error) ERR value is not an integer or out of range
    4) OK
    127.0.0.1:6379> get a
    "hello"
    127.0.0.1:6379> get b
    "world"
    127.0.0.1:6379> get c
    "part"
  • lettuce實(shí)例

  •  @Test
     public void testMultiExecError(){
     RedisClient client = RedisClient.create("redis://192.168.99.100:6379/0");
     StatefulRedisConnection<String, String> connection = client.connect();
     RedisCommands<String, String> syncCommands = connection.sync();
    
     syncCommands.multi();
     syncCommands.set("a","hello");
     syncCommands.set("b","world");
     syncCommands.incr("a");
     syncCommands.set("c","part");
     //DefaultTransactionResult[wasRolledBack=false,result=[OK, OK, io.lettuce.core.RedisCommandExecutionException: ERR value is not an integer or out of range, OK, 1]]
     TransactionResult transactionResult = syncCommands.exec();
     System.out.println(transactionResult);
     System.out.println(syncCommands.get("a"));
     System.out.println(syncCommands.get("b"));
     System.out.println(syncCommands.get("c"));
     }

    multi與discard

  • 命令行

  • 127.0.0.1:6379> set sum 1
    OK
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> incr sum
    QUEUED
    127.0.0.1:6379> discard
    OK
    127.0.0.1:6379> get sum
    "1"
  • lettuce實(shí)例

  •  @Test
     public void testMultiDiscard(){
     RedisClient client = RedisClient.create("redis://192.168.99.100:6379/0");
     StatefulRedisConnection<String, String> connection = client.connect();
     RedisCommands<String, String> syncCommands = connection.sync();
     syncCommands.incr("key1");
     syncCommands.multi();
     syncCommands.incr("key1");
     //需要有multi才可以執(zhí)行discard,成功返回OK
     String result = syncCommands.discard();
     System.out.println(result);
     System.out.println(syncCommands.get("key1"));
     }

    check and set

     @Test
     public void testWatch(){
     RedisClient client = RedisClient.create("redis://192.168.99.100:6379/0");
     StatefulRedisConnection<String, String> connection = client.connect();
     RedisCommands<String, String> syncCommands = connection.sync();
    
     String key = "key";
     syncCommands.watch(key);
    
     //another connection
     StatefulRedisConnection<String, String> conn2 = client.connect();
     RedisCommands<String, String> syncCommands2 = conn2.sync();
     syncCommands2.set(key, "a");
    
     syncCommands.multi();
     syncCommands.append(key, "b");
     //DefaultTransactionResult [wasRolledBack=true, responses=0]
     TransactionResult transactionResult = syncCommands.exec();
     System.out.println(transactionResult);
    
     System.out.println(syncCommands.get(key));
     }

    小結(jié)

  • reids提供multi exec/discard指令,類似open commit/rollback transaction,不過(guò)exec遇到類型操作等錯(cuò)誤時(shí)不會(huì)滾,該成功執(zhí)行的命令還是成功執(zhí)行,該失敗的還是失敗

  • multi exec保證的是,只要exec命令有執(zhí)行成功,則事務(wù)中一系列的命令都能執(zhí)行,如果exec因?yàn)榫W(wǎng)絡(luò)等問(wèn)題,server端沒(méi)有接收到,則事務(wù)中的一系列命令都不會(huì)被執(zhí)行

  • discard需要在有調(diào)用multi的前提下才能使用,該命令會(huì)清空事務(wù)隊(duì)列等待執(zhí)行的命令

  • redis提供watch指令,可以配合multi exec來(lái)使用,可以實(shí)現(xiàn)類似數(shù)據(jù)庫(kù)的樂(lè)觀鎖的機(jī)制,一旦watch的key被其他client有更新,則整個(gè)exec操作失敗

  • 聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Redis的事務(wù)操作的命令與執(zhí)行操作(代碼)

    Redis的事務(wù)操作的命令與執(zhí)行操作(代碼):本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Redis的事務(wù)操作的命令與執(zhí)行操作(代碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。序本文主要研究一下redis的事務(wù)操作命令multi與exec命令行127.0.0.1:6379> multi OK 127.0.0
    推薦度:
    標(biāo)簽: 操作 代碼 操作的
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产精品福利在线播放| 91无码人妻精品一区二区三区L| 国产精品大白天新婚身材| 欧美国产成人精品一区二区三区 | 国产精品丝袜久久久久久不卡| 久久丫精品国产亚洲av不卡| 国产精品一区12p| 亚洲精品小视频| 国产精品合集一区二区三区| 亚洲AV无码久久精品色欲| 久久99精品国产麻豆婷婷| 久久精品成人免费看| 国产AV国片精品| 欧洲精品久久久av无码电影| 亚洲av无码国产精品色在线看不卡| 国产精品视频一区二区三区不卡| 日本精品不卡视频| 91老司机深夜福利精品视频在线观看 | 97精品国产97久久久久久免费| 91麻豆精品国产自产在线观看亚洲| 亚洲精品国产成人片| 青草国产精品视频。| 久久精品99无色码中文字幕| 国产精品成人久久久久久久| 99re只有精品8中文| 亚洲欧美日韩精品永久在线| 2021最新国产精品一区| 日韩精品在线一区二区| 久久99精品国产麻豆宅宅| 久久精品国产精品亚洲精品| 国产精品99爱免费视频| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 精品国产乱码久久久久久1区2区| 久久综合精品国产二区无码| 亚洲av无码国产精品夜色午夜| 亚洲国产成人一区二区精品区| 亚洲精品无码久久一线| 久久久无码精品亚洲日韩蜜臀浪潮 | 国产三级精品久久| 国产人成精品综合欧美成人| 毛片a精品**国产|