CN113485998A - Redis事务处理方法及装置、电子设备、存储介质 - Google Patents
Redis事务处理方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN113485998A CN113485998A CN202110851624.4A CN202110851624A CN113485998A CN 113485998 A CN113485998 A CN 113485998A CN 202110851624 A CN202110851624 A CN 202110851624A CN 113485998 A CN113485998 A CN 113485998A
- Authority
- CN
- China
- Prior art keywords
- target command
- rollback
- original data
- executed
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000005096 rolling process Methods 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims description 19
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 238000011084 recovery Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Retry When Errors Occur (AREA)
Abstract
本申请公开了一种Redis事务处理方法及装置、电子设备、存储介质,其中,所述方法包括:在执行当前事务的目标命令前,解析所述目标命令得到目标信息;根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;生成至少包含所述原始数据的回滚日志;执行所述目标命令,并判断是否成功执行所述目标命令;若判断出所述目标命令执行失败,则基于所述回滚日志对所述原始数据进行回滚。从而通过预先获取原始数据,并生成回滚日志,后续直接基于回滚日志中的原始数据进行回滚,将相应的数据恢复至执行目标命令前的状态,不需要人工确定所需要回滚的数据,并通过编程进行回滚。
Description
技术领域
本申请涉及Redis事务处理领域,特别涉及一种Redis事务处理方法及装置、电子设备、存储介质。
背景技术
Redis(Remote Dictionary Server)是一种高性能的键值对(key-value)数据库,因此在当前被广泛的使用。
原生的Redis处理事务时,将同一事务的所有命令放入一个队列中,然后执行队列中的全部命令。但是,在redis事务处理过程中,即在执行队列中的命令时,不管事务中某一行命令是否发生了错误,其既不会终止后续命令的执行,也不会回滚已执行命令所影响的数据,会一直将所有的命令执行完。
所以,在出现命令执行错误时,需要开发人员在所有命令执行完后,根据整个事务的执行结果,确定需要回滚的数据,并基于需要回滚的数据编写相应的代码进行相应的数据回滚至执行命令前。但是人工的方式不仅效率低,并且回滚的程序也无法进行复用,所以因此回滚的过程非常的繁琐。
发明内容
基于上述现有技术的不足,本申请提供了一种Redis事务处理方法及装置、电子设备、存储介质,以解决现有技术过于繁琐的问题。
为了实现上述目的,本申请提供了以下技术方案:
本申请第一方面提供了一种Redis事务处理方法,包括:
在执行当前事务的目标命令前,解析所述目标命令得到目标信息;
根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;
生成至少包含所述原始数据的回滚日志;
执行所述目标命令,并判断是否成功执行所述目标命令;
若判断出所述目标命令执行失败,则基于所述回滚日志对所述原始数据进行回滚。
可选地,在上述的Redis事务处理方法中,所述根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据,包括:
基于所述目标信息确定出执行所述目标命令所涉及的key值;
对确定出的各个所述key值加全局锁;
查询出各个所述key值对应的原始数据。
可选地,在上述的Redis事务处理方法中,所述生成至少包含所述原始数据的回滚日志,包括:
将所述原始数据以及各个所述key值,存储至所述当前事务的一个栈结构中,得到所述回滚日志。
可选地,在上述的Redis事务处理方法中,所述判断是否成功执行所述目标命令之后,还包括:
若判断出所述目标命令执行成功,则删除所述回滚日志,并释放各个所述key值的全局锁。
可选地,在上述的Redis事务处理方法中,所述基于所述回滚日志对所述原始数据进行回滚之后,还包括:
判断是否成功执行回滚操作;
若判断出未能成功执行回滚操作,则记录并反馈回滚异常信息;
若判断出成功执行回滚操作,则删除所述回滚日志,并释放各个所述key值的全局锁。
本申请第二方面提供了一种Redis事务处理装置,包括:
解析单元,用于在执行当前事务的目标命令前,解析所述目标命令得到目标信息;
确定单元,用于根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;
生成单元,用于生成至少包含所述原始数据的回滚日志;
执行单元,用于执行所述目标命令;
第一判断单元,用于判断是否成功执行所述目标命令;
回滚单元,用于在所述第一判断单元判断出所述目标命令执行失败时,基于所述回滚日志对所述原始数据进行回滚。
可选地,在上述的Redis事务处理装置中,所述确定单元,包括:
提取单元,用于基于所述目标信息确定出执行所述目标命令所涉及的key值;
加锁单元,用于对确定出的各个所述key值加全局锁;
查询单元,用于查询出各个所述key值对应的原始数据。
可选地,在上述的Redis事务处理装置中,所述生成单元,包括:
生成子单元,用于将所述原始数据以及各个所述key值,存储至所述当前事务的一个栈结构中,得到所述回滚日志。
可选地,在上述的Redis事务处理装置中,还包括:
第一恢复单元,用于在所述第一判断单元判断出所述目标命令执行成功时,删除所述回滚日志,并释放各个所述key值的全局锁。
可选地,在上述的Redis事务处理装置中,还包括:
第二判断单元,用于判断是否成功执行回滚操作;
记录单元,用于在所述第二判断单元判断出未能成功执行回滚操作时,记录并反馈回滚异常信息;
第二恢复单元,用于在所述第二判断单元判断出成功执行回滚操作时,删除所述回滚日志,并释放各个所述key值的全局锁。
本申请第三方面提供了一种电子设备,包括:
一个或多个处理装置;
存储器,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理装置执行时,使得所述一个或多个处理装置实现如上述任意一项所述的Redis事务处理方法。
本申请第四方面提供一种计算机存储介质,用于存储程序,所述程序被执行时,用于实现如上述任意一项所述的Redis事务处理方法。
本申请提供的一种Redis事务处理方法,在执行当前事务的目标命令前,先解析目标命令,以得到目标命令中指示执行目标命令所涉及的数据的目标信息。然后,先根据目标信息的指示,确定出执行目标命令所涉及的原始数据,并生成至少包含原始数据的回滚日志。然后,执行目标命令,并判断是否成功执行目标命令。若判断出目标命令执行失败,则可以直接基于回滚日志中的原始数据进行回滚,从而将相应的数据恢复至执行目标命令前的状态,从而不需要人工确定所需要回滚的数据,并且每次均是针对回滚日志进行回滚,从而也不需要每次针对需要回滚的数据,进行相应的编程来回滚,进而提高了数据回滚的效率以及便捷性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种Redis事务处理方法的流程图;
图2为本申请实施例提供的一种确定原始数据的方法的流程图;
图3为本申请另一实施例提供的另一种Redis事务处理方法的流程图;
图4为本申请另一实施例提供的一种Redis事务处理装置的结构示意图;
图5为本申请另一实施例提供的一种确定单元的结构示意图;
图6为本申请另一实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本申请实施例提供了一种Redis事务处理方法,如图1所示,包括一下步骤:
S101、在执行当前事务的目标命令前,解析目标命令得到目标信息。
其中,目标命令指的是具有回滚需求的命令,即在该命令执行失败时需要进行回滚的命令。可选地,由于当前事务可以存在多个命令,所以当前事务的目标命令也可以是多个。
需要说明的是,目标信息指的是用于指示对哪些数据进行修改、删除等操作的指示信息。执行目标命令以对数据进行修改、删除等操作,所以目标命令中包含有目标信息。因此,在执行目标命令前,所解析目标命令,以获得目标命令中的目标信息。
S102、根据目标信息的指示,确定出执行目标命令所涉及的原始数据。
其中,执行目标命令所涉及的原始数据,指的是执行目标命令时,所所会影响到的当前的数据,例如执行目标命令缩回会被修改或者删除的数据等。
需要说明的是,在Redis数据以键值对(key-value)的方式存储,其中,原始数据即为“value”。相应的,在Redis事务的目标命令中会包含有所需要进行处理的数据的key值,以根据key值查找出key对应的原始数据进行处理。所以可选地,本申请另一实施例中,步骤S102的一种具体实施方式,如图2所示,包括:
S201、基于目标信息确定出执行目标命令所涉及的key值。
S202、对确定出的各个key值加全局锁。
为了防止在执行目标命令前,各个key值对应的原始数据被处理,从而出现变动,因此在本申请实施例中,对确定出的各个key值加全局锁,从而只能由当前事物对key进行修改、删除等操作。
S203、查询出各个key值对应的原始数据。
S103、生成至少包含原始数据的回滚日志。
具体的,将确定出的原始数据等信息记录到一个回滚日志,以备在后续需要回滚时,可以直接利用回滚日志中的原始数据进行回滚。
S104、执行目标命令,并判断是否成功执行目标命令。
具体的执行当前事务的命令,并在当前事务的命令执行结束后,根据执行结果判断目标命令是否成功执行。
其中,若判断出目标命令执行失败,则说明需要对在执行该目标命令时所处理的数据进行回滚,此时会抛出一个异常,以触发执行步骤S105。
S105、基于回滚日志对原始数据进行回滚。
具体的,利用回滚日志中的原始数据覆盖对应的数据,从而将执行目标命令所影响的数据,均恢复至执行目标命令前的状态。
本申请实施例提供的一种Redis事务处理方法,在执行当前事务的目标命令前,先解析目标命令,以得到目标命令中指示执行目标命令所涉及的数据的目标信息。然后,先根据目标信息的指示,确定出执行目标命令所涉及的原始数据,并生成至少包含原始数据的回滚日志。然后,执行目标命令,并判断是否成功执行目标命令。若判断出目标命令执行失败,则可以直接基于回滚日志中的原始数据进行回滚,从而将相应的数据恢复至执行目标命令前的状态,从而不需要人工确定所需要回滚的数据,并且每次均是针对回滚日志进行回滚,从而也不需要每次针对需要回滚的数据,进行相应的编程来回滚,进而提高了数据回滚的效率以及便捷性。
本申请另一实施例提供了另一种Redis事务处理方法,如图3所示,包括以下步骤:
S301、在执行当前事务的目标命令前,解析目标命令得到目标信息。
需要说明的是,步骤S301的具体实施过程可相应地参考上述方法实施例中的步骤S101,此处不再赘述。
S302、基于目标信息确定出执行目标命令所涉及的key值。
需要说明的是,步骤S302的具体实施过程可相应地参考上述方法实施例中的步骤S201,此处不再赘述。
S303、对确定出的各个key值加全局锁。
需要说明的是,步骤S303的具体实施过程可相应地参考上述方法实施例中的步骤S202,此处不再赘述。
S304、查询出各个key值对应的原始数据。
需要说明的是,步骤S304的具体实施过程可相应地参考上述方法实施例中的步骤S203,此处不再赘述。
S305、将原始数据以及各个key值,存储至当前事务的一个栈结构中,得到回滚日志。
由于根据key值可以查找到对应的原始数据,所以为了便于对原始数据进行回滚,因此在本申请实施例中,所生成的回滚日志中包括原始数据以及各个key值。
为了便于在当前事务的目标命令执行失败时,能更加便捷地获取并利用相应的回滚日志进行数据回滚,因此在本申请实施例中,将原始数据以及各个key值,压入当前事务的一个栈结构中,作为回滚日志。
S306、执行目标命令,并判断是否成功执行目标命令。
需要说明的是,步骤S306的具体实施方式,可相应地参见上述方法实施例中的步骤S104,此处不再赘述。
其中,若判断出目标命令执行失败,则执行步骤S307。若判断出目标命令执行成功,则执行步骤S310。
S307、基于回滚日志对原始数据进行回滚。
需要说明的是,在执行步骤S307之后执行步骤S308。
对于步骤S307的具体实施方式,可相应地参见上述方法实施例中的步骤S105,此处不再赘述。
S308、判断是否成功执行回滚操作。
其中,若判断出未能成功执行回滚操作,则执行步骤S309。若判断出成功执行回滚操作,则执行步骤S310。
S309、记录并反馈回滚异常信息。
可选地,回滚异常信息中可以包括有回滚异常的原因以及回滚异常的原始数据等信息,以提供给开发人员,以便于开发人员有针对性的进行维护或人工进行回滚。
S310、删除回滚日志,并释放各个key值的全局锁。
由于已成功自信目标命令不需要在利用回滚日志进行回滚,或者已成功执行回滚操作,回滚日志已没有作用,因此可以选择将其进行删除,避免占用存储资源。
由于,在执行目标命令前,对各个key值加了全局锁,而此时已成功回顾,所以当前事务已彻底结束,因此需要将各个key值的全局锁释放,以便后续的其他事务持有这些key值。
本申请实施例提供的一种Redis事务处理方法,在执行当前事务的目标命令前,先解析目标命令,以得到目标命令中所要操作的原始数据的key值。然后,先对key值加全局锁,避免其他事务对这些key值对应的数据进行处理。然后根据各个key值,确定key值对应的原始数据,并生成包含原始数据和key值的回滚日志。然后,执行目标命令,并判断是否成功执行目标命令。若判断出目标命令执行失败,则可以直接基于回滚日志中的原始数据进行回滚,从而将相应的数据恢复至执行目标命令前的状态,从而不需要人工确定所需要回滚的数据,并且每次均是针对回滚日志进行回滚,从而也不需要每次针对需要回滚的数据,进行相应的编程来回滚。最后,目标命令成功执行,或者成功回滚后,将回滚日志删除,并释放各个key值的全局锁。
需要说明的是,附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。
此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本申请另一实施例提供了一种Redis事务处理装置,如图4所示,包括:
解析单元401,用于在执行当前事务的目标命令前,解析所述目标命令得到目标信息。
确定单元402,用于根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据。
生成单元403,用于生成至少包含所述原始数据的回滚日志。
执行单元404,用于执行所述目标命令。
第一判断单元405,用于判断是否成功执行所述目标命令。
回滚单元406,用于在所述第一判断单元判断出所述目标命令执行失败时,基于所述回滚日志对所述原始数据进行回滚。
可选地,本申请另一实施例提供的Redis事务处理装置中的确定单元,如图5所示,包括以下单元:
提取单元501,用于基于所述目标信息确定出执行所述目标命令所涉及的key值。
加锁单元502,用于对确定出的各个所述key值加全局锁。
查询单元503,用于查询出各个所述key值对应的原始数据。
可选地,本申请另一实施例提供的Redis事务处理装置中的生成单元,包括:
生成子单元,用于将所述原始数据以及各个所述key值,存储至所述当前事务的一个栈结构中,得到所述回滚日志。
可选地,本申请另一实施例提供的Redis事务处理装置中,还包括:
第一恢复单元,用于在所述第一判断单元判断出所述目标命令执行成功时,删除所述回滚日志,并释放各个所述key值的全局锁。
可选地,本申请另一实施例提供的Redis事务处理装置中,还包括:
第二判断单元,用于判断是否成功执行回滚操作。
记录单元,用于在所述第二判断单元判断出未能成功执行回滚操作时,记录并反馈回滚异常信息。
第二恢复单元,用于在所述第二判断单元判断出成功执行回滚操作时,删除所述回滚日志,并释放各个所述key值的全局锁。
需要说明的是,本申请上述实施例提供的各个单元的具体工作过程,可相应地参考上述方法实施例中的相应的步骤,此处不再赘述。
并且,上述实施例中上描述的各个单元的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等。
本申请提供的一种Redis事务处理装置,在执行当前事务的目标命令前,先由解析单元解析目标命令,以得到目标命令中指示执行目标命令所涉及的数据的目标信息。然后,确定单元先根据目标信息的指示,确定出执行目标命令所涉及的原始数据,并由生成单元生成至少包含原始数据的回滚日志。然后,执行单元执行目标命令,并由第一判断单元判断是否成功执行目标命令。若判断出目标命令执行失败,则回滚单元可以直接基于回滚日志中的原始数据进行回滚,从而将相应的数据恢复至执行目标命令前的状态,从而不需要人工确定所需要回滚的数据,并且每次均是针对回滚日志进行回滚,从而也不需要每次针对需要回滚的数据,进行相应的编程来回滚,进而提高了数据回滚的效率以及便捷性。
本申请另一实施例提供一种电子设备,如图6所示,其示出了适于用来实现本公开实施例的电子设备600的结构示意图。其中,本公开实施例中的电子设备可以包括但不限于诸如台式计算机、笔记本电脑等电子设备。
如图6所示,本申请实施例提供的电子设备,包括:
一个或多个处理装置601,例如中央处理器、图形处理器等,以及包括存储器602,其上存储有一个或多个程序。
其中,一个或多个程序被一个或多个处理装置601执行时,使得一个或多个处理装置601实现如上述任意一个实施例提供的Redis事务处理方法。
可选地,电子设备还可以包括其他组成结构,同样参见图6,处理装置601、只读存储器ROM602以及随机存取存储器RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器、扬声器、振动器等的输出装置607,包括例如磁带、硬盘等的存储装置608,以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
本申请另一实施例提供一种计算机存储介质,用于存储程序,所述程序被执行时,用于实现如上述任意一项所述的Redis事务处理方法。
需要说明的是,本公开上述的计算机存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机存储介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
并且,上述计算机存储介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种Redis事务处理方法,其特征在于,包括:
在执行当前事务的目标命令前,解析所述目标命令得到目标信息;
根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;
生成至少包含所述原始数据的回滚日志;
执行所述目标命令,并判断是否成功执行所述目标命令;
若判断出所述目标命令执行失败,则基于所述回滚日志对所述原始数据进行回滚。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据,包括:
基于所述目标信息确定出执行所述目标命令所涉及的key值;
对确定出的各个所述key值加全局锁;
查询出各个所述key值对应的原始数据。
3.根据权利要求2所述的方法,其特征在于,所述生成至少包含所述原始数据的回滚日志,包括:
将所述原始数据以及各个所述key值,存储至所述当前事务的一个栈结构中,得到所述回滚日志。
4.根据权利要求2所述的方法,其特征在于,所述判断是否成功执行所述目标命令之后,还包括:
若判断出所述目标命令执行成功,则删除所述回滚日志,并释放各个所述key值的全局锁。
5.根据权利要求2所述的方法,其特征在于,所述基于所述回滚日志对所述原始数据进行回滚之后,还包括:
判断是否成功执行回滚操作;
若判断出未能成功执行回滚操作,则记录并反馈回滚异常信息;
若判断出成功执行回滚操作,则删除所述回滚日志,并释放各个所述key值的全局锁。
6.一种Redis事务处理装置,其特征在于,包括:
解析单元,用于在执行当前事务的目标命令前,解析所述目标命令得到目标信息;
确定单元,用于根据所述目标信息的指示,确定出执行所述目标命令所涉及的原始数据;
生成单元,用于生成至少包含所述原始数据的回滚日志;
执行单元,用于执行所述目标命令;
第一判断单元,用于判断是否成功执行所述目标命令;
回滚单元,用于在所述第一判断单元判断出所述目标命令执行失败时,基于所述回滚日志对所述原始数据进行回滚。
7.根据权利要求6所述的装置,其特征在于,所述确定单元,包括:
提取单元,用于基于所述目标信息确定出执行所述目标命令所涉及的key值;
加锁单元,用于对确定出的各个所述key值加全局锁;
查询单元,用于查询出各个所述key值对应的原始数据。
8.根据权利要求7所述的装置,其特征在于,所述生成单元,包括:
生成子单元,用于将所述原始数据以及各个所述key值,存储至所述当前事务的一个栈结构中,得到所述回滚日志。
9.一种电子设备,其特征在于,包括:
一个或多个处理装置;
存储器,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理装置执行时,使得所述一个或多个处理装置实现如权利要求1至5任意一项所述的Redis事务处理方法。
10.一种计算机存储介质,其特征在于,用于存储程序,所述程序被执行时,用于实现如权利要求1至5任意一项所述的Redis事务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110851624.4A CN113485998A (zh) | 2021-07-27 | 2021-07-27 | Redis事务处理方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110851624.4A CN113485998A (zh) | 2021-07-27 | 2021-07-27 | Redis事务处理方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113485998A true CN113485998A (zh) | 2021-10-08 |
Family
ID=77944162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110851624.4A Pending CN113485998A (zh) | 2021-07-27 | 2021-07-27 | Redis事务处理方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113485998A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106033437A (zh) * | 2015-03-13 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法及系统 |
CN111488367A (zh) * | 2020-04-16 | 2020-08-04 | 深圳前海微众银行股份有限公司 | 数据一致性的实现方法、装置、设备及计算机存储介质 |
CN111753013A (zh) * | 2020-06-24 | 2020-10-09 | 中国银行股份有限公司 | 分布式事务处理方法及装置 |
CN112256656A (zh) * | 2019-07-22 | 2021-01-22 | 中兴通讯股份有限公司 | 事务回滚方法及装置、数据库、系统、计算机存储介质 |
CN112835688A (zh) * | 2021-02-01 | 2021-05-25 | 北京星网锐捷网络技术有限公司 | 分布式事务处理方法、设备及存储介质 |
-
2021
- 2021-07-27 CN CN202110851624.4A patent/CN113485998A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106033437A (zh) * | 2015-03-13 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法及系统 |
CN112256656A (zh) * | 2019-07-22 | 2021-01-22 | 中兴通讯股份有限公司 | 事务回滚方法及装置、数据库、系统、计算机存储介质 |
CN111488367A (zh) * | 2020-04-16 | 2020-08-04 | 深圳前海微众银行股份有限公司 | 数据一致性的实现方法、装置、设备及计算机存储介质 |
CN111753013A (zh) * | 2020-06-24 | 2020-10-09 | 中国银行股份有限公司 | 分布式事务处理方法及装置 |
CN112835688A (zh) * | 2021-02-01 | 2021-05-25 | 北京星网锐捷网络技术有限公司 | 分布式事务处理方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9946628B2 (en) | Embedding and executing trace functions in code to gather trace data | |
US8145944B2 (en) | Business process error handling through process instance backup and recovery | |
US20110087637A1 (en) | Method and System for Database Recovery | |
US9355002B2 (en) | Capturing trace information using annotated trace output | |
CN111611145B (zh) | 崩溃信息收集方法、装置、存储介质及电子设备 | |
CN110727566B (zh) | 一种获取进程崩溃信息的方法、装置、介质和电子设备 | |
US20190114246A1 (en) | Method for replicating production behaviours in a development environment | |
CN110659210A (zh) | 一种信息获取方法、装置、电子设备及存储介质 | |
CN113342671B (zh) | 对运算模块进行验证的方法、装置、电子设备和介质 | |
CN110618873A (zh) | 一种基于信息系统的数据锁定方法、设备以及系统 | |
CN112597718B (zh) | 集成电路设计的验证方法、验证装置以及存储介质 | |
US9916220B2 (en) | Smart logging of trace data for storage systems | |
CN111538659B (zh) | 业务场景的接口测试方法、系统、电子设备和存储介质 | |
CN113760491A (zh) | 一种任务调度系统、方法、设备及存储介质 | |
CN113485998A (zh) | Redis事务处理方法及装置、电子设备、存储介质 | |
CN115757099A (zh) | 平台固件保护恢复功能自动测试方法和装置 | |
US11360882B2 (en) | Method and apparatus for calculating a software stability index | |
CN111984496B (zh) | 一种监控栈内存泄露的方法、装置、介质和电子设备 | |
CN114896641A (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN110674491B (zh) | 用于安卓应用的实时取证的方法、装置和电子设备 | |
CN110597862A (zh) | 一种基于信息系统的数据录入方法、设备以及系统 | |
JP2008112229A (ja) | ソフトウェア製品の更新データ適用方法 | |
US20230057746A1 (en) | User constrained process mining | |
US20120233224A1 (en) | Data processing | |
He et al. | When regression verification meets CEGAR |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |