<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 正常執行(前提全部寫對) ~~~ Jedis jedis = this.init(); Transaction transaction = jedis.multi(); transaction.lpush("key", "11"); transaction.lpush("key", "22"); transaction.lpush("key", "33"); //成功后返回添加在list中的索引 //如果上面是set的話,成功這邊是ok,ok List<Object> list = transaction.exec(); System.out.println(list); ~~~ # 全體連坐(一個出錯,全部執行失敗) ~~~ Jedis jedis = this.init(); try { Transaction transaction = jedis.multi(); transaction.lpush("key", "11"); transaction.lpush("key", "22"); //調用除0,模擬出錯 int a = 6 / 0; transaction.lpush("key", "33"); List<Object> list = transaction.exec(); } catch (Exception e) { e.printStackTrace(); } ~~~ # 放棄事務 回滾命令:discard(清除所有先前在一個事務中放入隊列的命令,然后恢復正常的連接狀態) ~~~ Jedis jedis = this.init(); Transaction transaction = jedis.multi(); transaction.lpush("key", "11"); transaction.lpush("key", "22"); transaction.lpush("key", "33"); //模擬放棄事務,可以加if判斷 transaction.discard(); ~~~ # 冤頭債主 一個出錯,出錯的不執行,其他的執行成功! ~~~ Jedis jedis = this.init(); Transaction transaction = jedis.multi(); transaction.set("k1", "11"); transaction.set("k2", "v2"); transaction.set("k3", "33"); //這個不執行,這個執行 transaction.incr("k2"); //這個執行 transaction.set("k4", "44"); List<Object> exec = transaction.exec(); System.out.println(exec); ~~~ 輸出 ~~~ [OK, OK, OK, redis.clients.jedis.exceptions.JedisDataException: ERR value is not an integer or out of range, OK] ~~~ # watch監控 添加監視:watch(key),監視某個key的變化,如果在事務執行之前這個(或這些) key被其他命令所改動,那么會取消事務里全部命令。 取消監視:unwatch(key) watch可以監控多個key,使用watch進行key的監控,相當于給key上鎖,如果在事務中,監控的key的value發生變化,則整個事務的全部命令都執行失敗 ~~~ Jedis jedis = this.init(); //可以watch多個key String watch = jedis.watch("k-1", "k-2"); //watch成功會返回ok System.out.println(watch); //即使是在這邊修改watch的key也會造成事務不執行 Thread.sleep(5000); System.out.println("--------"); //開啟事務 Transaction multi = jedis.multi(); multi.set("t-1", "v-1"); //休眠,可以模擬修改watch的key Thread.sleep(5000); multi.set("t-1", "v-1"); //執行事務 List<Object> exec = multi.exec(); //事務執行的結果 System.out.println(exec); ~~~ 如果不修改watch返回 ~~~ OK -------- [OK, OK] ~~~ 如果修改了,不論在第一個sleep還是第二個sleep 都是事務失敗 ~~~ OK -------- [] ~~~ 當對某個key進行watch時,如果其他的客戶端對key進行了更改事務可以做到取消事務操作但是管道不可以 # 總結 redis支持事務處理,語法錯誤的情況下會確保命令全部執行或全部不執行,而且按添加順序執行。在運行錯誤的情況下,redis會忽略錯誤命令,繼續執行下面的命令 在事務中不能同步查詢結果,需要結果就在exec處把結果接收
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看