<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                常規操作 public class TestReidsTranaction { ? public static void main(String\[\] args) { // 創建連接 Jedis jedis = new Jedis("192.168.120.129", 6379); // 設置密碼 如果沒有密碼可以不設置 jedis.auth("123456"); //監控key,如果該動了事務就被放棄 /\*3 jedis.watch("serialNum"); jedis.set("serialNum","s#####################"); jedis.unwatch();\*/ Transaction transaction = jedis.multi();//被當作一個命令進行執行 Response<String> response = transaction.get("serialNum"); transaction.set("serialNum","s002"); response = transaction.get("serialNum"); transaction.lpush("list3","a"); transaction.lpush("list3","b"); transaction.lpush("list3","c"); transaction.exec(); //2 transaction.discard(); System.out.println("serialNum\*\*\*\*\*\*\*\*\*\*\*"+response.get()); jedis.close(); ? } ? } ? 加鎖操作 public class TestReidsTranactionLock { ? public boolean transMethod() { // 創建連接 Jedis jedis = new Jedis("192.168.120.129", 6379); // 設置密碼 如果沒有密碼可以不設置 jedis.auth("123456"); int balance;// 可用余額 int debt;// 欠額 int amtToSubtract = 10;// 實刷額度 ? jedis.watch("balance"); // jedis.set("balance","5");//此句不該出現,講課方便。模擬其他程序已經修改了該條目 balance = Integer.parseInt(jedis.get("balance")); if (balance < amtToSubtract) { jedis.unwatch(); System.out.println("modify"); jedis.close(); return false; } else { System.out.println("\*\*\*\*\*\*\*\*\*\*\*transaction"); Transaction transaction = jedis.multi(); transaction.decrBy("balance", amtToSubtract); transaction.incrBy("debt", amtToSubtract); transaction.exec(); balance = Integer.parseInt(jedis.get("balance")); debt = Integer.parseInt(jedis.get("debt")); System.out.println("\*\*\*\*\*\*\*" + balance); System.out.println("\*\*\*\*\*\*\*" + debt); jedis.close(); return true; } } ? /\*\* \* 通俗點講,watch命令就是標記一個鍵,如果標記了一個鍵, 在提交事務前如果該鍵被別人修改過,那事務就會失敗,這種情況通常可以在程序中 重新再嘗試一次。 \* 首先標記了鍵balance,然后檢查余額是否足夠,不足就取消標記,并不做扣減; 足夠的話,就啟動事務進行更新操作, \* 如果在此期間鍵balance被其它人修改, 那在提交事務(執行exec)時就會報錯, 程序中通常可以捕獲這類錯誤再重新執行一次,直到成功。 \*/ public static void main(String\[\] args) { TestReidsTranactionLock test = new TestReidsTranactionLock(); boolean retValue = test.transMethod(); System.out.println("main retValue-------: " + retValue); } ? }
                  <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>

                              哎呀哎呀视频在线观看