[发明专利]Redis事务处理方法及装置、电子设备、存储介质在审
申请号: | 202110851624.4 | 申请日: | 2021-07-27 |
公开(公告)号: | CN113485998A | 公开(公告)日: | 2021-10-08 |
发明(设计)人: | 朱湘东;田威;孙先甫;张永颖;麦林鑫;孙中军;詹丽 | 申请(专利权)人: | 中国银行股份有限公司 |
主分类号: | G06F16/215 | 分类号: | G06F16/215;G06F16/245;G06F16/27 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 周初冬 |
地址: | 100818 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | redis 事务处理 方法 装置 电子设备 存储 介质 | ||
本申请公开了一种Redis事务处理方法及装置、电子设备、存储介质,其中,所述方法包括:在执行当前事务的目标命令前,解析所述目标命令得到目标信息;根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;生成至少包含所述原始数据的回滚日志;执行所述目标命令,并判断是否成功执行所述目标命令;若判断出所述目标命令执行失败,则基于所述回滚日志对所述原始数据进行回滚。从而通过预先获取原始数据,并生成回滚日志,后续直接基于回滚日志中的原始数据进行回滚,将相应的数据恢复至执行目标命令前的状态,不需要人工确定所需要回滚的数据,并通过编程进行回滚。
技术领域
本申请涉及Redis事务处理领域,特别涉及一种Redis事务处理方法及装置、电子设备、存储介质。
背景技术
Redis(Remote Dictionary Server)是一种高性能的键值对(key-value)数据库,因此在当前被广泛的使用。
原生的Redis处理事务时,将同一事务的所有命令放入一个队列中,然后执行队列中的全部命令。但是,在redis事务处理过程中,即在执行队列中的命令时,不管事务中某一行命令是否发生了错误,其既不会终止后续命令的执行,也不会回滚已执行命令所影响的数据,会一直将所有的命令执行完。
所以,在出现命令执行错误时,需要开发人员在所有命令执行完后,根据整个事务的执行结果,确定需要回滚的数据,并基于需要回滚的数据编写相应的代码进行相应的数据回滚至执行命令前。但是人工的方式不仅效率低,并且回滚的程序也无法进行复用,所以因此回滚的过程非常的繁琐。
发明内容
基于上述现有技术的不足,本申请提供了一种Redis事务处理方法及装置、电子设备、存储介质,以解决现有技术过于繁琐的问题。
为了实现上述目的,本申请提供了以下技术方案:
本申请第一方面提供了一种Redis事务处理方法,包括:
在执行当前事务的目标命令前,解析所述目标命令得到目标信息;
根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;
生成至少包含所述原始数据的回滚日志;
执行所述目标命令,并判断是否成功执行所述目标命令;
若判断出所述目标命令执行失败,则基于所述回滚日志对所述原始数据进行回滚。
可选地,在上述的Redis事务处理方法中,所述根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据,包括:
基于所述目标信息确定出执行所述目标命令所涉及的key值;
对确定出的各个所述key值加全局锁;
查询出各个所述key值对应的原始数据。
可选地,在上述的Redis事务处理方法中,所述生成至少包含所述原始数据的回滚日志,包括:
将所述原始数据以及各个所述key值,存储至所述当前事务的一个栈结构中,得到所述回滚日志。
可选地,在上述的Redis事务处理方法中,所述判断是否成功执行所述目标命令之后,还包括:
若判断出所述目标命令执行成功,则删除所述回滚日志,并释放各个所述key值的全局锁。
可选地,在上述的Redis事务处理方法中,所述基于所述回滚日志对所述原始数据进行回滚之后,还包括:
判断是否成功执行回滚操作;
若判断出未能成功执行回滚操作,则记录并反馈回滚异常信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国银行股份有限公司,未经中国银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110851624.4/2.html,转载请声明来源钻瓜专利网。