service层事务回滚,spring redis不支持回滚,出现脏数据,怎么解决?

飘逸飞燕 发布于 2015/09/01 17:45
阅读 5K+
收藏 2

【开源中国 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已经执行,存入关系,成为了脏数据,该怎么办? (步骤不改变的情况下,怎么避免脏数据产生?)



加载中
0
harleyliao
harleyliao
自己写redis dao的rollback方法
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部