1. 事务
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6379);
jedis.flushAll();
JSONObject jsonObject = new JSONObject();
jsonObject.put("zhangsan","24");
jsonObject.put("li","28");
String result = jsonObject.toJSONString();
//开启事务
Transaction transaction = jedis.multi();
try {
transaction.set("user1",result);
int i = 1/0;
transaction.set("user2",result);
transaction.exec();
}catch (Exception e){
transaction.discard();
e.printStackTrace();
}finally {
System.out.println(jedis.get("user1"));
System.out.println(jedis.get("user2"));
jedis.close();
}
}
运行结果
java.lang.ArithmeticException: / by zero
at JedisTest.main(JedisTest.java:19)
null
null
①1/0 是程序抛出异常;输出user1、user2的值为空
②注释1/0事务正常执行;输出result的值
2.监视
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6379);
jedis.flushAll();
jedis.set("user","zhangsan");
jedis.watch("user");
jedis.set("user","王五");
//开启事务
Transaction transaction = jedis.multi();
transaction.set("user","李四");
transaction.exec();
System.out.println(jedis.get("user"));
jedis.close();
}
// 输出:王五
// 提交事务,但user值不会被修改为李四,因为在事务开启之前user的值被修改了
文章转载自码间帝国,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




