Jedis事务详解
Jedis事務
1、正常執行的事務
編碼測試
package com.haiyang;import com.alibaba.fastjson.JSONObject; import redis.clients.jedis.Jedis; import redis.clients.jedis.Transaction;public class TestTX {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1", 6379);JSONObject object = new JSONObject();object.put("hello","world");object.put("name","haiyang");//開啟事務Transaction multi = jedis.multi();String string = object.toJSONString();try {//進入隊列multi.set("user1",string);multi.set("user2",string);//執行事務multi.exec();}catch (Exception e){//事務執行過程中發生異常,放棄事務multi.discard();e.printStackTrace();}finally {System.out.println(jedis.get("user1"));System.out.println(jedis.get("user2"));jedis.close();//關閉連接}} }輸出:
 
2、事務執行失敗
編碼測試
package com.haiyang;import com.alibaba.fastjson.JSONObject; import redis.clients.jedis.Jedis; import redis.clients.jedis.Transaction;public class TestTX {public static void main(String[] args) {Jedis jedis = new Jedis("127.0.0.1", 6379);jedis.flushDB();//清除正常執行事務時的數據JSONObject object = new JSONObject();object.put("hello","world");object.put("name","haiyang");//開啟事務Transaction multi = jedis.multi();String string = object.toJSONString();try {//進入隊列multi.set("user1",string);int i = 1/0;//代碼拋出異常,事務執行失敗multi.set("user2",string);//執行事務multi.exec();}catch (Exception e){//事務執行過程中發生異常,放棄事務multi.discard();e.printStackTrace();}finally {System.out.println(jedis.get("user1"));System.out.println(jedis.get("user2"));jedis.close();//關閉連接}} }輸出
 
 3、加上樂觀鎖 監控事務的執行
輸出:
 
總結
 
                            
                        - 上一篇: [dp][思维]Paranoid Str
- 下一篇: ERROR 1862 (HY000):
