hooyantsing's Blog

24_通过Jedis再次理解事务

字数统计: 280阅读时长: 1 min
2020/08/17

24 通过Jedis再次理解事务

Redis最新超详细版教程通俗易懂

Ctrl + Alt + t 快速加入代码块。

aee27bf9bc0dbf9bbcbc95185298cab6.png

使用 Jedis 事务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.kuang;

import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

public class TestTX {
public static void main(String[] args) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("hello","world");
jsonObject.put("name","kuangshen");
String result = jsonObject.toJSONString();

// 建立连接
Jedis jedis = new Jedis("127.0.0.1",6379);

// 事务
Transaction multi = jedis.multi();
try {
multi.set("user1",result);
multi.set("user2",result);
// 执行
multi.exec();
} catch (Exception e) {
// 放弃
multi.discard();
e.printStackTrace();
} finally {
System.out.println(jedis.get("user1"));
System.out.println(jedis.get("user2"));
// 关闭连接
jedis.close();
}
}
}

再次强调:

  • 如果在 Redis 里编译错误,将导致整个事务无不执行。
  • 如果在 Redis 里某个命令运行时错误,将跳过此命令继续执行后面的命令。

    关于课程里的错误

狂神的课程里尝试使用:

1
int i = 1/0;

实际上是触发了 Java编译器的运行时异常,直接跳进了 catch 里,事务直接取消了,并没有执行。

CATALOG
  1. 1. 24 通过Jedis再次理解事务
    1. 1.0.1. 关于课程里的错误