Redis事务与MySQL事务的区别
2022/3/28 19:23:09
本文主要是介绍Redis事务与MySQL事务的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.想着 在springboot事务中,第一步insert mysql 第二步 更新到redis中
@Transactional(rollbackFor={Exception.class}) public void addChannel(MesChannelVo mesChannelVo) { //id String id = GenerateCodeUtil.generateUUID(); //当前时间 String nowDateTime = DateUtil.DateToString(new Date(), DateStyle.YYYY_MM_DD_HH_MM_SS); MesChannel mesChannel = new MesChannel(); Beans.copy().from(mesChannelVo).to(mesChannel); mesChannel.setId(id); mesChannel.setValidStatus("Y"); mesChannel.setCreateTime(nowDateTime); mesChannel.setUpdateTime(nowDateTime); //1.插入数据库中 mesChannelDao.insert(mesChannel); // 2.更新缓存中 List<MesChannel> mesChannelsRedis = new ArrayList<>(); List<MesChannel> mesChannels = mesChannelDao.selectByEntry(mesChannel); if(mesChannels != null && !mesChannels.isEmpty()){ for (MesChannel mesCh : mesChannels){ mesChannelsRedis.clear(); mesChannelsRedis.add(mesCh); String channelType_mesTypeCode = mesCh.getChannelType() + "_" + mesCh.getMesTypeCode(); jedisUtil.setJson(channelType_mesTypeCode, JSON.toJSONString(mesChannelsRedis)); } } //3.测试事务回滚 int[] i = null; int i1 = i[0]; }
1.1 现象 mysql 数据库回滚 redis 正常插入
2 redis 事务
2.1redis命令是原子性的,事务不是原子性的
- 若事务队列中存在命令错误(类似java编译性错误),执行
exec
,所有命令都不会执行 - 若事务中存在语法错误(类似java 1/0的运行时异常),执行
exec
,正确命令会被执行,错误命令抛出异常
3.如果开启事务,操作不会被立即执行,将会返回null值
3.0 mysql 和 redis 事务
3.1 Redis事务与MySQL事务的区别
这篇关于Redis事务与MySQL事务的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南