暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Jedis事务操作

码间帝国 2021-06-21
776
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论