不会回滚redis

@Transactional
@Override
public void testTransaction() {
	stringRedisTemplate.opsForValue().set("niuma",12345 + "");
	update().set("user_id",1).eq("id","94893703222525971").update();

	System.out.println(1);
	int i = 3 / 0;
}

开始时状态

在这里插入图片描述

在这里插入图片描述

没遇到bug时,事务正常提交,修改成功

事务提交前

redis在事务提交前就已经发生变化,不受事务管理

在这里插入图片描述

mysql未发生变化

在这里插入图片描述

事务提交后

redis在事务提交前就已改变

在这里插入图片描述

mysql在事务提交后才发生变化

在这里插入图片描述

恢复原始状态,抛出除0异常

遇到bug前

redis在事务提交前发生改变

在这里插入图片描述

mysql并未发生改变

在这里插入图片描述

遇到bug

redis没有回滚

在这里插入图片描述

mysql回滚,没有发生改变

在这里插入图片描述

总结

spring的事务只回滚了mysql,没有回滚redis,redis本身也不支持事务。

更多推荐