[发明专利]redis事务回滚方法、装置、计算机设备和存储介质在审
申请号: | 202110726574.7 | 申请日: | 2021-06-29 |
公开(公告)号: | CN113420011A | 公开(公告)日: | 2021-09-21 |
发明(设计)人: | 宋欣欣 | 申请(专利权)人: | 平安消费金融有限公司 |
主分类号: | G06F16/21 | 分类号: | G06F16/21;G06F16/22;G06F16/23 |
代理公司: | 深圳市明日今典知识产权代理事务所(普通合伙) 44343 | 代理人: | 王杰辉;罗燕 |
地址: | 200000 上海市自由*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | redis 事务 方法 装置 计算机 设备 存储 介质 | ||
本申请涉及数据处理技术领域,提供了一种redis事务回滚方法、装置、计算机设备和存储介质,获取redis事务中的若干命令;所述命令包括get命令和非get命令;获取各个所述非get命令对应的key的原始结果;将所述原始结果按照预设规则存储在redis数据库中;将若干命令按照加入redis事务中的顺序依次执行,并实时检测命令的执行是否异常;若检测到当前执行的命令异常,根据原始结果对异常的命令和已经执行完成的命令进行事务回滚操作。本申请提供的redis事务回滚方法、装置、计算机设备和存储介质,通过将非get命令对应的key的原始结果存储在redis数据库中,在遇到执行异常的命令时,将已经执行的所有命令的对应的原始结果恢复,需手动校验数据,由程序内部逻辑保证数据准确性。
技术领域
本申请涉及数据处理的技术领域,特别涉及一种redis事务回滚方法、装置、计算机设备和存储介质。
背景技术
redis是一种非关系型数据库,它自带的事务功能是指:提供多个命令打包,然后根据先进先出原则执行命令,在执行的过程中,直到所有命令执行完,事务才算结束,并不关注过程中某个命令的成功或失败。因此如果遇到中间某一命令A执行出现异常,命令A之后的命令可能都无法正确执行,而A之前的命令已经被执行,这可能不是开发者所希望的。目前大多数开发者对于redis事务回滚的操作,需要每次在开发过程中记录需要记录的命令,然后做幂等校验保证redis事务的一致性,这种操作容易遗漏,导致出现问题。
发明内容
本申请的主要目的为提供一种redis事务回滚方法、装置、计算机设备和存储介质,旨在解决redis事务回滚时无法准确保证redis事务的一致性的技术问题。
为实现上述目的,本申请提供了一种redis事务回滚方法,包括以下步骤:
获取redis事务中的若干命令;所述命令包括get命令和非get命令;
获取各个所述非get命令对应的key的原始结果;
将所述原始结果按照预设规则存储在redis数据库中;
将若干所述命令按照加入所述redis事务中的顺序依次执行,并实时检测所述命令的执行是否异常;
若检测到当前执行的所述命令异常,根据所述原始结果对异常的所述命令和已经执行完成的所述命令进行事务回滚操作。
进一步地,所述获取各个所述非get命令对应的key的原始结果的步骤,包括:
获取各个所述非get命令对应的key;
构建所述key对应的目的get命令,并根据所述目的get命令获取所述key对应的原始结果。
进一步地,所述将所述原始结果按照预设规则存储在redis数据库中的步骤,包括:
将所述原始结果以string类型存储在所述redis数据库中预设的undolog buffer中。
进一步地,所述获取redis事务中的若干命令的步骤之前,包括:
检测各个所述命令的命令格式是否正确;
若正确,进入获取需要redis执行的若干命令的步骤。
进一步地,所述根据所述原始结果对异常的所述命令和已经执行完成的所述命令进行事务回滚操作的步骤,包括:
检测异常的所述命令之前是否存在其他非get命令;
若存在,获取异常的所述非get命令和异常的所述非get命令之前的其他非get命令的个数之和;
将所述个数之和与预设个数进行比较;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于平安消费金融有限公司,未经平安消费金融有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110726574.7/2.html,转载请声明来源钻瓜专利网。