0 环境
- 系统环境: centos7
- 编辑器: xshell
- IED:IDEA
1 事务概念
思维导图
new CallRedisDemo().execute 往期代码有 不在追叙
2 实现
1 在redis服务器中测试
2 代码实现
public class TransactionTest {
public static void main(String[] args) {
// 往期代码有 不在追叙
new CallRedisDemo().execute(jedis -> {
jedis.set("money", "1000");
Integer money = new TransactionTest().addMoney(jedis, "money", 2000);
System.out.println(money);
});
}
/**
* 事务的使用
* @param jedis
* @param key
* @param money
* @return
*/
private Integer addMoney(Jedis jedis, String key, Integer money) {
while (true){
// 监视键
jedis.watch(key);
// 将字符串转化为数字 相加
int newMoney = Integer.parseInt(jedis.get(key)) + money;
// 开启事务
Transaction multi = jedis.multi();
multi.set(key, String.valueOf(newMoney));
// 执行事务
List<Object> exec = multi.exec();
// 若是存在 跳出 否则循环执行
if (null != exec) {
break;
}
}
// 转化为整型
return Integer.parseInt(jedis.get(key));
}
}
- 正常操作
- 异常操作