Redis系列文章------9.通过Jedis操作事务

原创:兜里的猫

本章目录

  • Jedis测试事务

1. Jedis测试事务

1.正常的事务执行操作:

/**
 * 测试jedis事务操作
 * Created by ASUS on 2020/4/28.
 */
public class TestTransaction {
public static void main(String[] args) {
    Jedis jedis = new Jedis("106.13.85.14", 6379);
    jedis.auth("myredis94");

    jedis.flushDB();
    // 创建需要的值
    JSONObject json = new JSONObject();
    json.put("name", "ethan");
    json.put("pwd", "pwd");
    String value = json.toJSONString();

    // 1.开启事务
    Transaction multi = jedis.multi();
    try {
        // 2.创建命令操作
        multi.set("user1", value);
        multi.set("user2", value);

        // 3.执行事务
        multi.exec();
    } catch (Exception e) {
        // 如果出现异常,则放弃事务!
        multi.discard();
        e.printStackTrace();
    } finally {
        System.out.println(jedis.get("user1"));
        System.out.println(jedis.get("user2"));

        // 关闭连接
        jedis.close();
    }
}

}

执行结果:

{"name":"ethan","pwd":"pwd"}
{"name":"ethan","pwd":"pwd"}

2.出现异常的事务执行结果:

/**
 * 测试jedis事务操作
 * Created by ASUS on 2020/4/28.
 */
public class TestTransaction {
public static void main(String[] args) {
    Jedis jedis = new Jedis("106.13.85.14", 6379);
    jedis.auth("myredis94");

    jedis.flushDB();
    // 创建需要的值
    JSONObject json = new JSONObject();
    json.put("name", "ethan");
    json.put("pwd", "pwd");
    String value = json.toJSONString();

    // 1.开启事务
    Transaction multi = jedis.multi();
    try {
        // 2.创建命令操作
        multi.set("user1", value);
        multi.set("user2", value);

        // 代码抛出异常,事务执行失败!
        int i = 1/0;

        // 3.执行事务
        multi.exec();
    } catch (Exception e) {
        // 如果出现异常,则放弃事务!
        multi.discard();
        e.printStackTrace();
    } finally {
        System.out.println(jedis.get("user1"));
        System.out.println(jedis.get("user2"));

        // 关闭连接
        jedis.close();
    }
}

}

执行结果:

java.lang.ArithmeticException: / by zero
	at com.ethan.test.TestTransaction.main(TestTransaction.java:31)
null
null

可以在开始事务的时候,加入监听value的变化,实现乐观锁的操作!

// 1.开启事务
Transaction multi = jedis.multi();
String value = json.toJSONString();
// 监听
jedis.watch(value);
...
小程序码【兜里的猫】

小程序码

欢迎访问博客网页版:www.wldeer.com
关注公众号:(同步更新)【FreeWeb开发者】
# Redis 

评论

稻城 : 111
兜里的猫 : 是md
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×