@Transaction是否会回滚redis?

@Transaction是否会回滚redis?

不会回滚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本身也不支持事务。

经验分享 程序员 微信小程序 职场和发展