基于数据依赖关系和一致性保证的缓存管理方法及装置制造方法及图纸

技术编号:33291214 阅读:65 留言:0更新日期:2022-05-01 00:10
本发明专利技术公开了基于数据依赖关系和一致性保证的缓存管理方法及系统,以低代码侵入即仅在用户代码中通过注解而不需要写管理逻辑的方式,实现缓存管理需求。其技术方案为:第一,单个记录/多个记录:基于单个数据元素返回值、多个数据元素返回值在管理上的区别,及多个记录类型中的合集和页。第二,五个切入点:为增删改查这四种操作提供缓存管理入口,实现低代码侵入的目标。第三,数据查询逻辑的处理:包括解析查询结果,通过自动化的类型识别、id计算,完成查询结果的类型识别和依赖关系网的创建。第四,驱逐单数据对象算法:将失效模式分为删除模式/更新模式,结合单个记录/多个记录中不同缓存类型的特征,进行差异化管理。进行差异化管理。进行差异化管理。

【技术实现步骤摘要】
基于数据依赖关系和一致性保证的缓存管理方法及装置


[0001]本专利技术涉及一种缓存处理技术,具体涉及一种基于数据依赖关系和一致性保证的缓存管理方法及装置。

技术介绍

[0002]数据缓存是现代中大型软件系统的重要特性之一,通过缓存软件(如Redis,一个高性能的键值对key

value数据库)将查询结果缓存起来,并与查询条件建立关联,当相同的查询条件再次被请求时,可直接返回缓存数据,避免了查询数据库导致的巨量时间和IO开销。
[0003]已有的工具或框架已经提供基本的数据缓存的存、取和删除等操作,在软件开发过程中可直接使用。但直接使用基本的操作无法满足实际业务中对缓存灵活性的要求,因为数据对象间往往存在复杂的关联关系,当一个数据对象发生变化时,需要考虑被依赖对象的缓存的有效性,并以此类推,形成递归管理关系。
[0004]举例来说,假设现有业务涉及3个数据类型:年级、班级、学生,它们有以下属性:
[0005][0006][0007]从数据库角度,以上属性分别在表中建立字段和主外键关系,模型即可建立起来。但从实际业务需求角度,业务代码中的数据对象往往还需要额外字段来形成完整的描述(即展示字段,展示字段在数据对象中根据实际需要填充,可能为空),如:
[0008][0009]通过展示字段,在web页面或者API接口接收到的数据中,除了数据对象本身的属性外,还包含其关联的数据对象。
[0010]因此,当缓存数据存入时,需要解析出各数据类型间的依赖关系。当某一数据发生变化(增、删或更新)时,通过解析出的依赖关系,即可将被依赖对象级联失效,从而保证缓存数据与数据库数据的一致性。
[0011]但是,现有工具或解决方案中,尚无基于数据间的依赖关系,来提供完整的自动解析关系网,并提供相应的增删改查的操作入口,进而实现基于数据依赖关系和一致性保证的缓存管理方法。

技术实现思路

[0012]以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一
些概念以为稍后给出的更加详细的描述之序。
[0013]本专利技术的目的在于解决上述问题,提供了一种基于数据依赖关系和一致性保证的缓存管理方法及系统,能够以一种低代码侵入即仅在用户代码中通过注解而不需要写管理逻辑的方式,来实现缓存管理需求。
[0014]本专利技术的技术方案为:本专利技术揭示了一种基于数据依赖关系和一致性保证的缓存管理方法,方法包括对数据的四种操作类型的处理流程,分别是数据查询流程、数据新增流程、数据删除流程、数据更新流程,其中:
[0015]数据查询流程,包括:
[0016]步骤11:根据数据对象查询中的执行条件表达式,计算表达式的值,其中执行条件表达式用于检查查询条件是否合法;
[0017]步骤12:当计算出的表达式的值表示查询条件不合法时,不执行缓存管理逻辑,直接执行用户的查询方法,缓存管理逻辑结束;
[0018]步骤13:当计算出的表达式的值表示查询条件合法时,根据数据对象查询中的参数计算缓存键值;
[0019]步骤14:查询计算出的缓存键值是否存在于键值对数据库中,如存在则执行步骤15,如不存在则执行步骤16;
[0020]步骤15:从缓存中获取查询条件对应的查询结果并返回,缓存管理逻辑结束;
[0021]步骤16:执行用户的查询方法,以获取查询结果;
[0022]步骤17:解析查询结果,判断返回的是单个记录还是多个记录,自动识别查询对象类型,计算查询对象标识,所依赖的对象类型、依赖类型、依赖对象标识集合,多个类型,生成对应的单个记录/多个记录,将生成的单个记录/多个记录存入缓存管理数据,建立起缓存键值与其对应结果的对象类型、对象标识之间的关联关系,根据缓存管理数据形成缓存数据的依赖关系网;
[0023]步骤18:将查询结果存入键值对数据库中;
[0024]步骤19:返回查询结果,缓存管理逻辑结束;
[0025]数据删除流程,包括:
[0026]步骤21:根据数据对象删除中的执行条件表达式,计算表达式的值;
[0027]步骤22:当计算出的表达式的值表示条件不合法时,不执行缓存管理逻辑,直接执行用户的查询方法,缓存管理逻辑结束;
[0028]步骤23:当计算出的表达式的值表示条件合法时,执行缓存管理逻辑,根据删除对象标识表达式,计算被删除对象的标识值;
[0029]步骤24:执行驱逐单数据对象算法的删除模式,传入被删除对象的标识;
[0030]步骤25:遍历数据对象删除中指定的失效对象数组,执行驱逐单数据对象算法的更新模式;
[0031]步骤26:执行完毕返回,缓存管理逻辑结束,开始执行用户的删除方法;
[0032]数据新增流程,包括:
[0033]步骤31:根据新增对象的类型,将新增对象类型在多个记录的集合管理中登记的所有缓存置为失效,并在键值对数据库上删除相应缓存;
[0034]步骤32:遍历数据对象新增中指定的失效对象数组,执行驱逐单数据对象算法的
更新模式,缓存管理逻辑结束;
[0035]数据更新流程,包括:
[0036]步骤41:根据数据更新对象中的执行条件表达式计算表达式的值;
[0037]步骤42:当计算出的表达式的值表示条件不合法时,不执行缓存管理逻辑,直接执行用户的更新方法,缓存管理逻辑结束;
[0038]步骤43:当计算出的表达式的值表示条件合法时,执行缓存管理逻辑,根据更新对象标识表达式,计算被更新对象的标识值;
[0039]步骤44:执行驱逐单数据对象算法的更新模式,传入被更新对象的标识;
[0040]步骤45:遍历数据对象更新中指定的失效对象数组,执行驱逐单数据对象算法的更新模式;
[0041]步骤46:缓存管理逻辑执行完毕返回,开始执行用户的更新方法。
[0042]根据本专利技术的基于数据依赖关系和一致性保证的缓存管理方法的一实施例,驱逐单数据对象算法,是在处理当对象被删除或更新时,对应该失效的缓存数据和缓存管理数据进行相应的管理;当其他对象的数据依赖被删除对象时,调用该驱逐单数据对象算法进行缓存管理,递归调用后直到所有与被删除对象的数据有直接或间接依赖的所有缓存数据和缓存管理数据都被识别和删除。
[0043]根据本专利技术的基于数据依赖关系和一致性保证的缓存管理方法的一实施例,驱逐单数据对象算法配置为执行以下的步骤:
[0044]步骤101:根据输入判断是更新模式还是删除模式;
[0045]步骤102:在删除模式时,在多个记录的集合中找到符合条件的记录,执行步骤104;
[0046]步骤103:在更新模式时,在多个记录的集合中找到符合条件的记录,再执行步骤104;<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于数据依赖关系和一致性保证的缓存管理方法,其特征在于,方法包括对数据的四种操作类型的处理流程,分别是数据查询流程、数据新增流程、数据删除流程、数据更新流程,其中:数据查询流程,包括:步骤11:根据数据对象查询中的执行条件表达式,计算表达式的值,其中执行条件表达式用于检查查询条件是否合法;步骤12:当计算出的表达式的值表示查询条件不合法时,不执行缓存管理逻辑,直接执行用户的查询方法,缓存管理逻辑结束;步骤13:当计算出的表达式的值表示查询条件合法时,根据数据对象查询中的参数计算缓存键值;步骤14:查询计算出的缓存键值是否存在于键值对数据库中,如存在则执行步骤15,如不存在则执行步骤16;步骤15:从缓存中获取查询条件对应的查询结果并返回,缓存管理逻辑结束;步骤16:执行用户的查询方法,以获取查询结果;步骤17:解析查询结果,判断返回的是单个记录还是多个记录,自动识别查询对象类型,计算查询对象标识,所依赖的对象类型、依赖类型、依赖对象标识集合,多个类型,生成对应的单个记录/多个记录,将生成的单个记录/多个记录存入缓存管理数据,建立起缓存键值与其对应结果的对象类型、对象标识之间的关联关系,根据缓存管理数据形成缓存数据的依赖关系网;步骤18:将查询结果存入键值对数据库中;步骤19:返回查询结果,缓存管理逻辑结束;数据删除流程,包括:步骤21:根据数据对象删除中的执行条件表达式,计算表达式的值;步骤22:当计算出的表达式的值表示条件不合法时,不执行缓存管理逻辑,直接执行用户的查询方法,缓存管理逻辑结束;步骤23:当计算出的表达式的值表示条件合法时,执行缓存管理逻辑,根据删除对象标识表达式,计算被删除对象的标识值;步骤24:执行驱逐单数据对象算法的删除模式,传入被删除对象的标识;步骤25:遍历数据对象删除中指定的失效对象数组,执行驱逐单数据对象算法的更新模式;步骤26:执行完毕返回,缓存管理逻辑结束,开始执行用户的删除方法;数据新增流程,包括:步骤31:根据新增对象的类型,将新增对象类型在多个记录的集合管理中登记的所有缓存置为失效,并在键值对数据库上删除相应缓存;步骤32:遍历数据对象新增中指定的失效对象数组,执行驱逐单数据对象算法的更新模式,缓存管理逻辑结束;数据更新流程,包括:步骤41:根据数据更新对象中的执行条件表达式计算表达式的值;步骤42:当计算出的表达式的值表示条件不合法时,不执行缓存管理逻辑,直接执行用
户的更新方法,缓存管理逻辑结束;步骤43:当计算出的表达式的值表示条件合法时,执行缓存管理逻辑,根据更新对象标识表达式,计算被更新对象的标识值;步骤44:执行驱逐单数据对象算法的更新模式,传入被更新对象的标识;步骤45:遍历数据对象更新中指定的失效对象数组,执行驱逐单数据对象算法的更新模式;步骤46:缓存管理逻辑执行完毕返回,开始执行用户的更新方法。2.根据权利要求1所述的基于数据依赖关系和一致性保证的缓存管理方法,其特征在于,驱逐单数据对象算法,是在处理当对象被删除或更新时,对应该失效的缓存数据和缓存管理数据进行相应的管理;当其他对象的数据依赖被删除对象时,调用该驱逐单数据对象算法进行缓存管理,递归调用后直到所有与被删除对象的数据有直接或间接依赖的所有缓存数据和缓存管理数据都被识别和删除。3.根据权利要求2所述的基于数据依赖关系和一致性保证的缓存管理方法,其特征在于,驱逐单数据对象算法配置为执行以下的步骤:步骤101:根据输入判断是更新模式还是删除模式;步骤102:在删除模式时,在多个记录的集合中找到符合条件的记录,执行步骤104;步骤103:在更新模式时,在多个记录的集合中找到符合条件的记录,再执行步骤104;步骤104:删除步骤102和步骤103中收集到的多个记录及其对应的缓存;步骤105:在单个记录的集合中过滤出被删除数据对象及其对应的缓存,并加以删除;步骤106:在单个记录的集合中查找依赖了被删除对象的所有记录,删除查找到的这些被依赖的对象及其缓存;步骤107:步骤106中被依赖的对象删除后,返回到步骤103,逐个调用驱逐单数据对象算法的更新模式进行遍历处理;步骤108:所有受影响缓存均处理完毕后算法结束。4.根据权利要求3所述的基于数据依赖关系和一致性保证的缓存管理方法,其特征在于,在步骤102中,查找符合条件的记录进一步配置为:计算多个类型的集合中的数据,过滤出满足以下条件的记录:(1)目标是输入的对象类型;(2)当类型是合集时,开发人员指定当该对象类型的任意对象被更新,就删除对应的缓存数据;当类型是页时,全部选中;其中,合集是根据查询条件得到的完整结果,页是根据查询条件得到的部分结果。5.根据权利要求3所述的基于数据依赖关系和一致性保证的缓存管理方法,其特征在于,在步骤103中,查找符合条件的记录进一步配置为:计算多个类型的结合中的数据,过滤出满足以下条件的记录:(1)目标是输入的对象类型;(2)当开发人员指定当该对象类型的任意对象被更新,就删除对应的缓存数据。6.一种基于数据依赖关系和一致性保证的缓存...

【专利技术属性】
技术研发人员:谢恒马克李凡张千里
申请(专利权)人:上海金融期货信息技术有限公司
类型:发明
国别省市:

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

1