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、加上乐观锁 监控事务的执行
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");
String string = object.toJSONString();
jedis.watch(string);//乐观锁监控,数据是否被改变
//开启事务
Transaction multi = jedis.multi();
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();//关闭连接
}
}
}
输出: