Redis事务处理方法及装置、电子设备、存储介质制造方法及图纸

技术编号:30329396 阅读:20 留言:0更新日期:2021-10-10 00:31
本申请公开了一种Redis事务处理方法及装置、电子设备、存储介质,其中,所述方法包括:在执行当前事务的目标命令前,解析所述目标命令得到目标信息;根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;生成至少包含所述原始数据的回滚日志;执行所述目标命令,并判断是否成功执行所述目标命令;若判断出所述目标命令执行失败,则基于所述回滚日志对所述原始数据进行回滚。从而通过预先获取原始数据,并生成回滚日志,后续直接基于回滚日志中的原始数据进行回滚,将相应的数据恢复至执行目标命令前的状态,不需要人工确定所需要回滚的数据,并通过编程进行回滚。并通过编程进行回滚。并通过编程进行回滚。

【技术实现步骤摘要】
Redis事务处理方法及装置、电子设备、存储介质


[0001]本申请涉及Redis事务处理领域,特别涉及一种Redis事务处理方法及装置、电子设备、存储介质。

技术介绍

[0002]Redis(Remote Dictionary Server)是一种高性能的键值对(key

value)数据库,因此在当前被广泛的使用。
[0003]原生的Redis处理事务时,将同一事务的所有命令放入一个队列中,然后执行队列中的全部命令。但是,在redis事务处理过程中,即在执行队列中的命令时,不管事务中某一行命令是否发生了错误,其既不会终止后续命令的执行,也不会回滚已执行命令所影响的数据,会一直将所有的命令执行完。
[0004]所以,在出现命令执行错误时,需要开发人员在所有命令执行完后,根据整个事务的执行结果,确定需要回滚的数据,并基于需要回滚的数据编写相应的代码进行相应的数据回滚至执行命令前。但是人工的方式不仅效率低,并且回滚的程序也无法进行复用,所以因此回滚的过程非常的繁琐。

技术实现思路

[0005]基于上述现有技术的不足,本申请提供了一种Redis事务处理方法及装置、电子设备、存储介质,以解决现有技术过于繁琐的问题。
[0006]为了实现上述目的,本申请提供了以下技术方案:
[0007]本申请第一方面提供了一种Redis事务处理方法,包括:
[0008]在执行当前事务的目标命令前,解析所述目标命令得到目标信息;
[0009]根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;
[0010]生成至少包含所述原始数据的回滚日志;
[0011]执行所述目标命令,并判断是否成功执行所述目标命令;
[0012]若判断出所述目标命令执行失败,则基于所述回滚日志对所述原始数据进行回滚。
[0013]可选地,在上述的Redis事务处理方法中,所述根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据,包括:
[0014]基于所述目标信息确定出执行所述目标命令所涉及的key值;
[0015]对确定出的各个所述key值加全局锁;
[0016]查询出各个所述key值对应的原始数据。
[0017]可选地,在上述的Redis事务处理方法中,所述生成至少包含所述原始数据的回滚日志,包括:
[0018]将所述原始数据以及各个所述key值,存储至所述当前事务的一个栈结构中,得到所述回滚日志。
[0019]可选地,在上述的Redis事务处理方法中,所述判断是否成功执行所述目标命令之后,还包括:
[0020]若判断出所述目标命令执行成功,则删除所述回滚日志,并释放各个所述key值的全局锁。
[0021]可选地,在上述的Redis事务处理方法中,所述基于所述回滚日志对所述原始数据进行回滚之后,还包括:
[0022]判断是否成功执行回滚操作;
[0023]若判断出未能成功执行回滚操作,则记录并反馈回滚异常信息;
[0024]若判断出成功执行回滚操作,则删除所述回滚日志,并释放各个所述key值的全局锁。
[0025]本申请第二方面提供了一种Redis事务处理装置,包括:
[0026]解析单元,用于在执行当前事务的目标命令前,解析所述目标命令得到目标信息;
[0027]确定单元,用于根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;
[0028]生成单元,用于生成至少包含所述原始数据的回滚日志;
[0029]执行单元,用于执行所述目标命令;
[0030]第一判断单元,用于判断是否成功执行所述目标命令;
[0031]回滚单元,用于在所述第一判断单元判断出所述目标命令执行失败时,基于所述回滚日志对所述原始数据进行回滚。
[0032]可选地,在上述的Redis事务处理装置中,所述确定单元,包括:
[0033]提取单元,用于基于所述目标信息确定出执行所述目标命令所涉及的key值;
[0034]加锁单元,用于对确定出的各个所述key值加全局锁;
[0035]查询单元,用于查询出各个所述key值对应的原始数据。
[0036]可选地,在上述的Redis事务处理装置中,所述生成单元,包括:
[0037]生成子单元,用于将所述原始数据以及各个所述key值,存储至所述当前事务的一个栈结构中,得到所述回滚日志。
[0038]可选地,在上述的Redis事务处理装置中,还包括:
[0039]第一恢复单元,用于在所述第一判断单元判断出所述目标命令执行成功时,删除所述回滚日志,并释放各个所述key值的全局锁。
[0040]可选地,在上述的Redis事务处理装置中,还包括:
[0041]第二判断单元,用于判断是否成功执行回滚操作;
[0042]记录单元,用于在所述第二判断单元判断出未能成功执行回滚操作时,记录并反馈回滚异常信息;
[0043]第二恢复单元,用于在所述第二判断单元判断出成功执行回滚操作时,删除所述回滚日志,并释放各个所述key值的全局锁。
[0044]本申请第三方面提供了一种电子设备,包括:
[0045]一个或多个处理装置;
[0046]存储器,其上存储有一个或多个程序;
[0047]当所述一个或多个程序被所述一个或多个处理装置执行时,使得所述一个或多个
处理装置实现如上述任意一项所述的Redis事务处理方法。
[0048]本申请第四方面提供一种计算机存储介质,用于存储程序,所述程序被执行时,用于实现如上述任意一项所述的Redis事务处理方法。
[0049]本申请提供的一种Redis事务处理方法,在执行当前事务的目标命令前,先解析目标命令,以得到目标命令中指示执行目标命令所涉及的数据的目标信息。然后,先根据目标信息的指示,确定出执行目标命令所涉及的原始数据,并生成至少包含原始数据的回滚日志。然后,执行目标命令,并判断是否成功执行目标命令。若判断出目标命令执行失败,则可以直接基于回滚日志中的原始数据进行回滚,从而将相应的数据恢复至执行目标命令前的状态,从而不需要人工确定所需要回滚的数据,并且每次均是针对回滚日志进行回滚,从而也不需要每次针对需要回滚的数据,进行相应的编程来回滚,进而提高了数据回滚的效率以及便捷性。
附图说明
[0050]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0051]图1为本申请实施例提供的一种Redis事务处理方法的流程图;
[0052]图2为本申请实施例提供的一种确定原始数据的方法的流程图;
[0053]图3本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Redis事务处理方法,其特征在于,包括:在执行当前事务的目标命令前,解析所述目标命令得到目标信息;根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;生成至少包含所述原始数据的回滚日志;执行所述目标命令,并判断是否成功执行所述目标命令;若判断出所述目标命令执行失败,则基于所述回滚日志对所述原始数据进行回滚。2.根据权利要求1所述的方法,其特征在于,所述根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据,包括:基于所述目标信息确定出执行所述目标命令所涉及的key值;对确定出的各个所述key值加全局锁;查询出各个所述key值对应的原始数据。3.根据权利要求2所述的方法,其特征在于,所述生成至少包含所述原始数据的回滚日志,包括:将所述原始数据以及各个所述key值,存储至所述当前事务的一个栈结构中,得到所述回滚日志。4.根据权利要求2所述的方法,其特征在于,所述判断是否成功执行所述目标命令之后,还包括:若判断出所述目标命令执行成功,则删除所述回滚日志,并释放各个所述key值的全局锁。5.根据权利要求2所述的方法,其特征在于,所述基于所述回滚日志对所述原始数据进行回滚之后,还包括:判断是否成功执行回滚操作;若判断出未能成功执行回滚操作,则记录并反馈回滚异常信息;若判断出成功执行回滚操作,则删除所述回滚日志,并释放各个所述key值的全局锁。6.一种Redis...

【专利技术属性】
技术研发人员:朱湘东田威孙先甫张永颖麦林鑫孙中军詹丽
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:

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

1