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-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程