Jedis事务详解
Jedis事務(wù)
1、正常執(zhí)行的事務(wù)
編碼測(cè)試
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");//開(kāi)啟事務(wù)Transaction multi = jedis.multi();String string = object.toJSONString();try {//進(jìn)入隊(duì)列multi.set("user1",string);multi.set("user2",string);//執(zhí)行事務(wù)multi.exec();}catch (Exception e){//事務(wù)執(zhí)行過(guò)程中發(fā)生異常,放棄事務(wù)multi.discard();e.printStackTrace();}finally {System.out.println(jedis.get("user1"));System.out.println(jedis.get("user2"));jedis.close();//關(guān)閉連接}} }輸出:
2、事務(wù)執(zhí)行失敗
編碼測(cè)試
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();//清除正常執(zhí)行事務(wù)時(shí)的數(shù)據(jù)JSONObject object = new JSONObject();object.put("hello","world");object.put("name","haiyang");//開(kāi)啟事務(wù)Transaction multi = jedis.multi();String string = object.toJSONString();try {//進(jìn)入隊(duì)列multi.set("user1",string);int i = 1/0;//代碼拋出異常,事務(wù)執(zhí)行失敗multi.set("user2",string);//執(zhí)行事務(wù)multi.exec();}catch (Exception e){//事務(wù)執(zhí)行過(guò)程中發(fā)生異常,放棄事務(wù)multi.discard();e.printStackTrace();}finally {System.out.println(jedis.get("user1"));System.out.println(jedis.get("user2"));jedis.close();//關(guān)閉連接}} }輸出
3、加上樂(lè)觀鎖 監(jiān)控事務(wù)的執(zhí)行
輸出:
總結(jié)
- 上一篇: [dp][思维]Paranoid Str
- 下一篇: ERROR 1862 (HY000):