<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Redis的事務操作的命令與執行操作(代碼)

        來源:懂視網 責編:小采 時間:2020-11-09 08:41:19
        文檔

        Redis的事務操作的命令與執行操作(代碼)

        Redis的事務操作的命令與執行操作(代碼):本篇文章給大家帶來的內容是關于Redis的事務操作的命令與執行操作(代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。序本文主要研究一下redis的事務操作命令multi與exec命令行127.0.0.1:6379> multi OK 127.0.0
        推薦度:
        導讀Redis的事務操作的命令與執行操作(代碼):本篇文章給大家帶來的內容是關于Redis的事務操作的命令與執行操作(代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。序本文主要研究一下redis的事務操作命令multi與exec命令行127.0.0.1:6379> multi OK 127.0.0

        本篇文章給大家帶來的內容是關于Redis的事務操作的命令與執行操作(代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

        本文主要研究一下redis的事務操作

        命令

        multi與exec

      1. 命令行

      2. 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"
      3. lettuce實例

      4.  @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"));
         }

        部分執行

      5. 命令行

      6. 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"
      7. lettuce實例

      8.  @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

      9. 命令行

      10. 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"
      11. lettuce實例

      12.  @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才可以執行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));
         }

        小結

      13. reids提供multi exec/discard指令,類似open commit/rollback transaction,不過exec遇到類型操作等錯誤時不會滾,該成功執行的命令還是成功執行,該失敗的還是失敗

      14. multi exec保證的是,只要exec命令有執行成功,則事務中一系列的命令都能執行,如果exec因為網絡等問題,server端沒有接收到,則事務中的一系列命令都不會被執行

      15. discard需要在有調用multi的前提下才能使用,該命令會清空事務隊列等待執行的命令

      16. redis提供watch指令,可以配合multi exec來使用,可以實現類似數據庫的樂觀鎖的機制,一旦watch的key被其他client有更新,則整個exec操作失敗

      17. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Redis的事務操作的命令與執行操作(代碼)

        Redis的事務操作的命令與執行操作(代碼):本篇文章給大家帶來的內容是關于Redis的事務操作的命令與執行操作(代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。序本文主要研究一下redis的事務操作命令multi與exec命令行127.0.0.1:6379> multi OK 127.0.0
        推薦度:
        標簽: 操作 代碼 操作的
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费人成网站在线高清| 毛片免费观看的视频| 国产偷国产偷亚洲高清日韩 | 亚洲人成网站在线播放vr| 一区二区三区免费精品视频 | 国产A∨免费精品视频| 亚洲av麻豆aⅴ无码电影| 在线观看亚洲免费视频| 亚洲av再在线观看| www免费黄色网| 亚洲高清专区日韩精品| 色猫咪免费人成网站在线观看| 亚洲伊人tv综合网色| 免费毛片a在线观看67194 | 精品久久久久久亚洲| 久久久青草青青国产亚洲免观 | 国产免费一区二区视频| 精品亚洲国产成AV人片传媒| 日本h在线精品免费观看| 亚洲精品无码久久久久A片苍井空 亚洲精品无码久久久久YW | 18以下岁毛片在免费播放| 国产99在线|亚洲| 国产黄色片在线免费观看| 一区二区三区免费电影| 色婷婷亚洲十月十月色天| 一本无码人妻在中文字幕免费| 精品久久久久久亚洲中文字幕| 亚洲另类激情综合偷自拍图| 91九色视频无限观看免费| 亚洲AV无码一区二区三区鸳鸯影院| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲色大成网站www久久九| 亚洲午夜精品一级在线播放放| 久久中文字幕免费视频| 最新国产精品亚洲| 国产偷国产偷亚洲清高动态图| 亚洲免费在线视频播放| 国产精品观看在线亚洲人成网| 久久久久久久久亚洲| 在线免费观看国产视频| 日本xxxx色视频在线观看免费|