【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
框架描述:spring mvc,关系数据库redis。
问题描述:如题,service层事务回滚,spring redis不支持回滚,出现脏数据,怎么解决?
举例说明:
一、目录树结构,父子节点,每个节点都对应一个页面;
二、最大层数5;
三、当新增节点时,必有父节点(除非是根节点);前提,在service层(方法@Transactional已标)某方法调用dao:
1、参数parentNodeId,sonNodeName;
2、dao创建子节点,返回子节点sonNodeId;
3、存父子关系(1:N),redisDao.save(parentNodeId, sonNodeId);
4、dao保存页面中的元素,返回idList;
5、存子节点对应页面中的元素(1:N),for循环idList,anotherRedisDao.save(sonNodeId, id);
6、结束;
如果以上步骤中,4环节出现异常,事务回滚;redis key操作是不支持事务的,但此时步骤3已经执行,存入关系,成为了脏数据,该怎么办? (步骤不改变的情况下,怎么避免脏数据产生?)