redis事务回滚方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:30141319 阅读:10 留言:0更新日期:2021-09-23 15:04
本申请涉及数据处理技术领域,提供了一种redis事务回滚方法、装置、计算机设备和存储介质,获取redis事务中的若干命令;所述命令包括get命令和非get命令;获取各个所述非get命令对应的key的原始结果;将所述原始结果按照预设规则存储在redis数据库中;将若干命令按照加入redis事务中的顺序依次执行,并实时检测命令的执行是否异常;若检测到当前执行的命令异常,根据原始结果对异常的命令和已经执行完成的命令进行事务回滚操作。本申请提供的redis事务回滚方法、装置、计算机设备和存储介质,通过将非get命令对应的key的原始结果存储在redis数据库中,在遇到执行异常的命令时,将已经执行的所有命令的对应的原始结果恢复,需手动校验数据,由程序内部逻辑保证数据准确性。性。性。

【技术实现步骤摘要】
redis事务回滚方法、装置、计算机设备和存储介质


[0001]本申请涉及数据处理的
,特别涉及一种redis事务回滚方法、装置、计算机设备和存储介质。

技术介绍

[0002]redis是一种非关系型数据库,它自带的事务功能是指:提供多个命令打包,然后根据先进先出原则执行命令,在执行的过程中,直到所有命令执行完,事务才算结束,并不关注过程中某个命令的成功或失败。因此如果遇到中间某一命令A执行出现异常,命令A之后的命令可能都无法正确执行,而A之前的命令已经被执行,这可能不是开发者所希望的。目前大多数开发者对于redis事务回滚的操作,需要每次在开发过程中记录需要记录的命令,然后做幂等校验保证redis事务的一致性,这种操作容易遗漏,导致出现问题。

技术实现思路

[0003]本申请的主要目的为提供一种redis事务回滚方法、装置、计算机设备和存储介质,旨在解决redis事务回滚时无法准确保证redis事务的一致性的技术问题。
[0004]为实现上述目的,本申请提供了一种redis事务回滚方法,包括以下步骤:
[0005]获取redis事务中的若干命令;所述命令包括get命令和非get命令;
[0006]获取各个所述非get命令对应的key的原始结果;
[0007]将所述原始结果按照预设规则存储在redis数据库中;
[0008]将若干所述命令按照加入所述redis事务中的顺序依次执行,并实时检测所述命令的执行是否异常;
[0009]若检测到当前执行的所述命令异常,根据所述原始结果对异常的所述命令和已经执行完成的所述命令进行事务回滚操作。
[0010]进一步地,所述获取各个所述非get命令对应的key的原始结果的步骤,包括:
[0011]获取各个所述非get命令对应的key;
[0012]构建所述key对应的目的get命令,并根据所述目的get命令获取所述key对应的原始结果。
[0013]进一步地,所述将所述原始结果按照预设规则存储在redis数据库中的步骤,包括:
[0014]将所述原始结果以string类型存储在所述redis数据库中预设的undolog buffer中。
[0015]进一步地,所述获取redis事务中的若干命令的步骤之前,包括:
[0016]检测各个所述命令的命令格式是否正确;
[0017]若正确,进入获取需要redis执行的若干命令的步骤。
[0018]进一步地,所述根据所述原始结果对异常的所述命令和已经执行完成的所述命令进行事务回滚操作的步骤,包括:
[0019]检测异常的所述命令之前是否存在其他非get命令;
[0020]若存在,获取异常的所述非get命令和异常的所述非get命令之前的其他非get命令的个数之和;
[0021]将所述个数之和与预设个数进行比较;
[0022]若所述个数之和大于所述预设个数,通过checkpoint机制对异常的所述非get命令和异常的非get命令之前的其他非get命令进行事务回滚操作。
[0023]进一步地,所述根据所述原始结果对异常的所述命令和已经执行完成的所述命令进行事务回滚操作的步骤之后,包括:
[0024]检测所述事务回滚操作是否完成;
[0025]若完成,删除所述redis数据库中存储的所述原始结果;
[0026]若未完成,重复预设次数的事务回滚操作。
[0027]进一步地,所述实时检测各个所述命令的执行是否异常的步骤,包括:
[0028]通过try catch命令实时检测所述命令的执行是否异常。
[0029]本申请还提供一种redis事务回滚装置,包括:
[0030]第一获取单元,用于获取redis事务中的若干命令;所述命令包括get命令和非get命令;
[0031]第二获取单元,用于获取各个所述非get命令对应的key的原始结果;
[0032]存储单元,用于将所述原始结果按照预设规则存储在redis数据库中;
[0033]第一检测单元,用于将若干所述命令按照加入所述redis事务中的顺序依次执行,并实时检测各个所述命令的执行是否异常;
[0034]回滚单元,用于若检测到当前执行的所述命令异常,根据所述原始结果对异常的所述命令和已经执行完成的所述命令进行事务回滚操作。
[0035]本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述的redis事务回滚方法的步骤。
[0036]本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的redis事务回滚方法的步骤。
[0037]本申请提供的redis事务回滚方法、装置、计算机设备和存储介质,获取redis事务中的若干命令;所述命令包括get命令和非get命令;获取各个所述非get命令对应的key的原始结果;将所述原始结果按照预设规则存储在redis数据库中;将若干所述命令按照加入所述redis事务中的顺序依次执行,并实时检测各个所述命令的执行是否异常;若检测到当前执行的所述命令异常,根据所述原始结果对异常的所述命令和已经执行完成的所述命令进行事务回滚操作。本申请提供的redis事务回滚方法、装置、计算机设备和存储介质,通过将非get命令对应的key的原始结果存储在redis数据库中,在遇到执行异常的命令时,将已经执行的所有命令的对应的原始结果恢复,这样不需要开发者在进行redis事务操作时,每次手动在开发过程中记录需要执行的非get命令,然后做幂等校验保证redis事务的一致性,通过本实施例提供的redis事务回滚方法,无需手动校验数据,由程序内部逻辑保证数据准确性。
附图说明
[0038]图1是本申请一实施例中redis事务回滚方法步骤示意图;
[0039]图2是本申请另一实施例中redis事务回滚装置结构框图;
[0040]图3为本申请一实施例的计算机设备的结构示意框图。
[0041]本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0042]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0043]参照图1,本申请一实施例提供了一种redis事务回滚方法,包括以下步骤:
[0044]步骤S1,获取redis事务中的若干命令;所述命令包括get命令和非get命令;
[0045]步骤S2,获取各个所述非get命令对应的key的原始结果;
[0046]步骤S3,将所述结果按照预设规则存储在redis数据库中;
[0047]步骤S4,将若干所述命令按照加入所述redis事务中的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种redis事务回滚方法,其特征在于,包括以下步骤:获取redis事务中的若干命令;所述命令包括get命令和非get命令;获取各个所述非get命令对应的key的原始结果;将所述原始结果按照预设规则存储在redis数据库中;将若干所述命令按照加入所述redis事务中的顺序依次执行,并实时检测所述命令的执行是否异常;若检测到当前执行的所述命令异常,根据所述原始结果对异常的所述命令和已经执行完成的所述命令进行事务回滚操作。2.根据权利要求1所述的redis事务回滚方法,其特征在于,所述获取各个所述非get命令对应的key的原始结果的步骤,包括:获取各个所述非get命令对应的key;构建所述key对应的目的get命令,并根据所述目的get命令获取所述key对应的原始结果。3.根据权利要求1所述的redis事务回滚方法,其特征在于,所述将所述原始结果按照预设规则存储在redis数据库中的步骤,包括:将所述原始结果以string类型存储在所述redis数据库中预设的undolog buffer中。4.根据权利要求1所述的redis事务回滚方法,其特征在于,所述获取redis事务中的若干命令的步骤之前,包括:检测各个所述命令的命令格式是否正确;若正确,进入获取需要redis执行的若干命令的步骤。5.根据权利要求1所述的redis事务回滚方法,其特征在于,所述根据所述原始结果对异常的所述命令和已经执行完成的所述命令进行事务回滚操作的步骤,包括:检测异常的所述命令之前是否存在其他非get命令;若存在,获取异常的所述非get命令和异常的所述非get命令之前的其他非get命令的个数之和;将所述个数之和与预设个数进行比较;若所述...

【专利技术属性】
技术研发人员:宋欣欣
申请(专利权)人:平安消费金融有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1