CN117891840A - 数据的缓存方法、装置、电子设备和存储介质 - Google Patents

数据的缓存方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN117891840A
CN117891840A CN202311698104.XA CN202311698104A CN117891840A CN 117891840 A CN117891840 A CN 117891840A CN 202311698104 A CN202311698104 A CN 202311698104A CN 117891840 A CN117891840 A CN 117891840A
Authority
CN
China
Prior art keywords
cache
target
data
service data
attribute
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
Application number
CN202311698104.XA
Other languages
English (en)
Inventor
魏裕峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202311698104.XA priority Critical patent/CN117891840A/zh
Publication of CN117891840A publication Critical patent/CN117891840A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种数据的缓存方法、装置、电子设备和存储介质;其中,该方法包括:响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据缓存切入点指示的目标缓存属性和/或数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,缓存切入点用于触发指定目标缓存属性的缓存逻辑;根据目标缓存标识符,判断目标缓存属性指示的目标缓存区域中是否包含目标业务数据;若不包含,则根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据;根据目标业务数据的数据类型,将目标业务数据和目标缓存标识符关联存储至目标缓存区域中,得到目标缓存区域中的目标业务数据。本公开可以提高数据缓存的通用性。

Description

数据的缓存方法、装置、电子设备和存储介质
技术领域
本公开涉及缓存技术领域,尤其是涉及一种数据的缓存方法、装置、电子设备和存储介质。
背景技术
在计算机技术领域,缓存是一种将频繁使用的数据存储在快速访问的内存中的技术。相比于从磁盘或网络读取数据,从内存中读取数据的速度更快,可以大大降低系统的响应时间和资源开销。
现有的数据缓存技术通常是根据具体的业务场景设计缓存架构,通用性弱,难以移植到不同的业务场景中应用。
发明内容
有鉴于此,本公开的目的在于提供一种数据的缓存方法、装置、电子设备和存储介质,以提高数据缓存的通用性。
第一方面,本公开实施例提供了一种数据的缓存方法,方法包括:响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据所述缓存切入点指示的目标缓存属性和/或所述数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,所述缓存切入点用于触发指定目标缓存属性的缓存逻辑;根据所述目标缓存标识符,判断所述目标缓存属性指示的目标缓存区域中是否包含所述目标业务数据;若不包含,则根据所述目标业务数据的远程数据索引,从目标数据库中获取所述目标业务数据;根据所述目标业务数据的数据类型,将所述目标业务数据和所述目标缓存标识符关联存储至所述目标缓存区域中,得到所述目标缓存区域中的目标业务数据。
第二方面,本公开实施例提供了一种数据的缓存装置,装置包括:标识生成模块,用于响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据所述缓存切入点指示的目标缓存属性和/或所述数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,所述缓存切入点用于触发指定目标缓存属性的缓存逻辑;缓存判断模块,用于根据所述目标缓存标识符,判断所述目标缓存属性指示的目标缓存区域中是否包含所述目标业务数据;远程读取模块,用于若不包含,则根据所述目标业务数据的远程数据索引,从目标数据库中获取所述目标业务数据;缓存存储模块,用于根据所述目标业务数据的数据类型,将所述目标业务数据和所述目标缓存标识符关联存储至所述目标缓存区域中,得到所述目标缓存区域中的目标业务数据。
第三方面,本公开实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述数据的缓存方法。
第四方面,本公开实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述数据的缓存方法。
本公开实施例带来了以下有益效果:
上述数据的缓存方法、装置、电子设备和存储介质,响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据所述缓存切入点指示的目标缓存属性和/或所述数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,所述缓存切入点用于触发指定目标缓存属性的缓存逻辑;根据所述目标缓存标识符,判断所述目标缓存属性指示的目标缓存区域中是否包含所述目标业务数据;若不包含,则根据所述目标业务数据的远程数据索引,从目标数据库中获取所述目标业务数据;根据所述目标业务数据的数据类型,将所述目标业务数据和所述目标缓存标识符关联存储至所述目标缓存区域中,得到所述目标缓存区域中的目标业务数据。该方式中,在读取数据时通过缓存切入点触发特定属性的缓存逻辑,生成缓存标识符,查找特定缓存区域中是否存在业务数据,如果不存在,再将业务数据存储至特定缓存区域中,使得该缓存方式与业务逻辑解耦,从而通用于不同的业务场景。
本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例中数据的缓存方法的一个实施例流程图;
图2为本公开实施例中数据的缓存方法的另一个实施例流程图;
图3为本公开实施例提供的一种数据的缓存装置的示意图;
图4为本公开实施例提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本公开实施例的具体流程进行描述,请参阅图1,本公开实施例中数据的缓存方法的一个实施例包括:
步骤S10、响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据缓存切入点指示的目标缓存属性和/或数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,缓存切入点用于触发指定目标缓存属性的缓存逻辑;
可以理解的是,数据读取指令用于读取目标业务数据,在数据读取指令触发时,同时触发数据读取指令所包含缓存切入点指示的指定目标缓存属性的缓存逻辑,缓存逻辑用于按指定的目标缓存属性生成/读取缓存。本实施方式中,缓存切入点还传入有目标缓存属性,数据读取指令还传入有远程数据索引,其中,远程数据索引用于查找目标数据库中的目标业务数据。根据目标缓存属性和远程数据索引,可以生成目标业务数据对应的唯一目标缓存标识符,目标缓存标识符用于在缓存中查找目标业务数据。在一种实施方式中,目标缓存标识符可以通过预设的标识符生成算法生成,具体算法此处不做限定。
本实施方式中,目标缓存标识符可以根据目标缓存属性和/或远程数据索引生成,当目标缓存属性具有唯一性,或数据读取指令未传入有远程数据索引时,目标缓存标识符可以仅根据缓存切入点指示的目标缓存属性生成,当目标缓存属性不具有唯一性,且数据读取指令传入有远程数据索引时,目标缓存标识符可以仅根据数据读取指令指示的远程数据索引生成,也可以根据缓存切入点指示的目标缓存属性和数据读取指令指示的远程数据索引生成,使得基于相同的目标缓存属性或远程数据索引,可以生成相同的目标缓存标识符,并使目标业务数据在缓存空间中具有唯一性。
本实施方式中,缓存切入点的引入可以在不修改数据读取指令所指示的数据读取逻辑的基础上,触发额外的缓存逻辑,使得缓存逻辑与具体的业务逻辑解耦。缓存切入点是一种在指令中切入缓存逻辑执行的触发器,例如,在面向切面编程(Aspect OrientedProgramming,AOP)中,可以通过@Before、@After、@Around等注解定义切面,切面会在特定的方法调用前、后或者前后都执行;通过宏(Macros),可以在函数调用前后注入额外的代码;通过装饰器,可以在不修改原有函数或类的代码的情况下,增加或修改其功能;缓存切入点还可以是其它,具体此处不做限定。
在一种实施方式中,缓存切入点可以传入任意缓存属性,如缓存过期时长属性、缓存标签属性、缓存区域属性等用于指示缓存方式的属性,其中,缓存标签属性和缓存区域属性均可以用于指示目标缓存区域,缓存切入点传入的所有缓存属性均可以作为目标缓存属性,用于生成目标缓存标识符。
步骤S20、根据目标缓存标识符,判断目标缓存属性指示的目标缓存区域中是否包含目标业务数据;
本实施方式中,生成目标缓存标识符之后,首先判断缓存中是否包含目标缓存标识符对应的目标业务数据,具体的,在目标缓存属性指示的目标缓存区域中查找目标缓存标识符对应的目标业务数据,如果查找到目标业务数据,则确定目标缓存区域中包含目标业务数据,反之,则确定目标缓存区域中不包含目标业务数据,使得业务数据的获取更高效。
可以理解的是,通过缓存切入点指示的目标缓存属性,还可以用于指示查询目标业务数据的目标缓存区域,在一种实施方式中,在步骤S10之前,可以将缓存空间划分为多个缓存区域,其中,缓存区域的划分方式可以是横向的,也可以是纵向的,具体此处不做限定。划分好多个缓存区域之后,通过缓存切入点传入目标缓存属性可以用于指示目标缓存区域,从而快速地在目标缓存区域中查询目标业务数据,使得缓存查询方式适用于不同场景的区域划分,均能快速确定所要查询的缓存区域。
步骤S30、若不包含,则根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据;
本实施方式中,如果目标缓存区域中不包含目标业务数据,说明目标业务数据未缓存,则需要在目标数据库中获取,具体的,通过远程数据索引查找目标数据库,以获取目标业务数据。在一种实施方式中,从目标数据库中获取目标业务数据属于数据读取指令所指示的数据读取逻辑,因此,数据读取指令还用于指示目标数据库的地址信息,使得业务逻辑与缓存逻辑解耦。
步骤S40、根据目标业务数据的数据类型,将目标业务数据和目标缓存标识符关联存储至目标缓存区域中,得到目标缓存区域中的目标业务数据。
可以理解的是,目标业务数据在目标数据库中以一定的数据类型存储,在一种实施方式中,根据目标业务数据的数据类型,可以将目标业务数据以同样的数据类型与目标缓存标识符关联存储到目标缓存区域中,也可以根据缓存数据库的类型,将目标业务数据的数据类型转换为对应缓存数据库的数据类型,将目标业务数据以对应缓存数据库的数据类型与目标缓存标识符关联存储到目标缓存区域中,得到目标缓存区域中的目标业务数据。
在一种实施方式中,在将目标业务数据和目标缓存标识符关联存储至目标缓存区域中时,如目标业务数据为空值,则将空标记位与目标缓存标识符关联存储在目标缓存区域中,得到目标缓存区域中的目标业务数据,以避免缓存被重复查询不存在的数据导致的缓存穿透,还能减少向目标数据库请求业务数据的次数,从而提高数据查询效率。
上述实施方式提供的数据的缓存方法,在读取数据时通过缓存切入点触发特定属性的缓存逻辑,生成缓存标识符,查找特定缓存区域中是否存在业务数据,如果不存在,再将业务数据存储至特定缓存区域中,使得该缓存方式与业务逻辑解耦,从而通用于不同的业务场景。
请参阅图2,本公开实施例中数据的缓存方法的另一个实施例包括:
步骤S201、响应于针对目标业务数据的包含缓存切入点的数据读取指令,获取数据读取指令指示的远程数据索引;缓存切入点用于触发指定目标缓存属性的缓存装饰器;目标缓存属性包括缓存区域属性;缓存区域属性用于指示存储目标业务数据的目标缓存区域;
本实施方式中,缓存切入点为一种装饰器,装饰器通过函数包装和闭包的机制,将一个函数作为参数传递给装饰器函数,并返回一个新的函数,以扩展或修改原始函数的行为。本实施方式中,缓存装饰器为一种装饰器函数,数据读取指令所触发的数据读取函数作为参数传递给缓存装饰器,目标缓存属性通过缓存装饰器传入装饰器函数,以指示装饰器函数按照目标缓存属性执行缓存逻辑。作为装饰器,可以通过@符号的形式作为缓存切入点,例如,“@cache”即为一种缓存切入点,用于触发“cache”缓存函数/缓存装饰器。
步骤S202、对缓存区域属性和/或远程数据索引进行哈希编码,得到目标缓存标识符;
本实施方式中,将装饰器函数和/或数据读取函数传入的参数转换为哈希编码,即可获得唯一的目标缓存标识符,其中,装饰器函数传入的参数包括缓存区域属性,数据读取函数包括远程数据索引,如果缓存区域属性具有唯一性,则仅对缓存区域属性进行哈希编码,即可得到目标缓存标识符,如果缓存区域属性不具有唯一性,则可以仅对远程数据索引进行哈希编码,或结合缓存区域属性和远程数据索引进行哈希编码,以获得目标缓存标识符。
步骤S203、根据目标缓存标识符,判断目标缓存属性指示的目标缓存区域中是否包含目标业务数据;
在一种实施方式中,缓存区域属性包括至少一个层级缓存区域的缓存区域属性;步骤S203包括:判断缓存区域属性指示的目标缓存区域中是否包含目标缓存标识符对应的目标业务数据;其中,目标缓存区域为缓存区域属性指示的最底层缓存区域。
本实施方式中,在步骤S201之前可以预先将缓存空间划分为多个层级的缓存区域,作为示例而非限定的是,最高层级的缓存区域(简称为第一层缓存区域)包括至少一个业务模块对应的缓存区域;下一层级的缓存区域(简称为第二层缓存区域)可以划分为“用户空间区域”和“全局空间区域”,其中,“用户空间区域”用于存储用户专属的缓存数据,“全局空间区域”用于存储所有用户共用的缓存数据;“用户空间区域”还可以划分下一层缓存区域(简称为第三层缓存区域),第三层缓存区域可以通过缓存标签属性划分,例如,业务模块A、业务模块B和业务模块C分别对应一个第一层缓存区域,在业务模块A对应的第一次缓存区域中,划分有第二层缓存区域,第二层缓存区域中包括“用户空间区域”和“全局空间区域”,“用户空间区域”下还划分有第三层缓存区域,第三层缓存区域中包括缓存标签1对应的缓存区域、缓存标签2对应的缓存区域和缓存标签3对应的缓存区域,具体此处不做限定。在查询缓存中的目标业务数据时,只需在缓存区域属性指示的最底层缓存区域中查找,例如只需在第三层缓存区域的缓存标签1对应的缓存区域中查找目标业务数据,具体此处不做限定。本缓存空间的分级方式可以通用于不同的业务场景,并提高缓存的查询效率。
进一步的,还可以批量删除指定缓存区域的缓存数据,在一种实施方式中,响应于缓存删除指令,根据所述缓存删除指令指示的待删除缓存区域属性,确定待删除缓存区域;所述待删除缓存区域为所述待删除缓存区域属性指示的最底层缓存区域;获取所述待删除缓存区域对应的预设标识符列表,所述预设标识符列表包括所有存储在所述待删除缓存区域中的第一缓存标识符;根据所述待删除缓存区域对应的预设标识符列表,将所述待删除缓存区域中所有所述第一缓存标识符对应的缓存数据删除。本实施方式中,缓存删除指令可以指定待删除缓存区域属性,用于指示待删除的最底层缓存区域,即待删除缓存区域。例如,缓存删除指令可以指定删除缓存区域层级为“业务模块A-用户空间区域-缓存标签1”的待删除缓存区域的缓存数据,使得缓存删除的灵活性和效率提高。需要说明的是,不同缓存区域的缓存标识符和/或空标记位的标识符预先以标识符列表的形式存储,例如存储为redis的list数据类型,在触发指定缓存区域的缓存删除指令时,先获取待删除缓存区域对应的预设标识符列表,根据该预设标识符列表,可以准确地删除待删除缓存区域的缓存数据,以避免缓存数据的误删,还可以避免在删除指定缓存区域的缓存数据,需要遍历所有缓存数据所属的缓存区域属性,从而提高缓存删除的效率,减少计算资源的浪费。
步骤S204、若不包含,则根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据;
在一种实施方式中,步骤S204包括:若不包含,则执行数据读取指令指示的数据读取函数,根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据。本实施方式中,如果目标缓存属性指示的目标缓存区域中不包含目标业务数据,则需要从存储目标业务数据的远程数据库中获取目标业务数据,具体通过数据读取指令所触发的数据读取函数,向存储目标业务数据的目标数据库请求获取远程数据索引所对应的目标业务数据。
步骤S205、根据目标业务数据的数据类型,将目标业务数据和目标缓存标识符关联存储至目标缓存区域中,得到目标缓存区域中的目标业务数据。
在一种实施方式中,步骤S205包括:根据预设的数据类型映射关系,确定目标业务数据的数据类型对应的缓存数据类型;将目标业务数据的数据类型转换为缓存数据类型,得到缓存数据类型的目标业务数据;将缓存数据类型的目标业务数据和目标缓存标识符绑定存储至目标缓存区域中,得到目标缓存区域中的目标业务数据。可以理解的是,不同的业务逻辑返回的业务数据的数据类型可以不同,例如,一个查询指令可能返回一个列表,而另一个指令可能返回一个字典或者单个值。因此,为了将业务数据的数据类型存储为合适数据类型的缓存数据,可以预先定义数据类型映射关系,以将业务数据以合适的数据类型存储在缓存中。作为示例而非限定的是,假设缓存数据库为远程字典服务(RemoteDictionary Server,redis)类型的数据库,业务逻辑的编程语言为python,那么,一种数据类型映射关系可以如下表1所示:
表1
目标业务数据的数据类型 缓存数据类型
python列表 redis-list
python字典 redis-hash
python通用数据类型 redis-str
在一种实施方式中,将目标业务数据的数据类型转换为缓存数据类型,得到缓存数据类型的目标业务数据,包括:若目标业务数据的数据类型为预设数据类型,则对目标业务数据进行序列化处理,得到序列化的目标业务数据;将序列化的目标业务数据和转换为缓存数据类型,得到缓存数据类型的目标业务数据。可以理解的是,由于序列化和反序列化可能执行恶意代码,因此,本实施方式仅限制对预设数据类型进行序列化处理,使得反序列化只能获得预设数据类型的业务数据,以减少恶意代码执行的可能性。作为示例而非限定的是,预设数据类型可以为MongoDB数据库中用于表示文档的唯一标识符的特定数据类型、日期类型等,具体此处不做限定。本实施方式中,如果目标业务数据的数据类型为预设数据类型,才对目标业务数据进行序列化处理,再转换为缓存数据类型,从而得到缓存数据类型的目标业务数据。
在一种实施方式中,步骤S205之后,还包括:响应于针对目标业务数据的数据更新指令,将目标缓存区域中的目标业务数据删除。可以理解的是,在目标业务数据发生更新时,只需将目标缓存区域中的目标业务数据删除即可,在下一次触发针对目标业务数据的包含缓存切入点的数据读取指令时,会重新从目标数据库中获取目标业务数据,并存储到目标缓存区域中,使得缓存数据的更新无需进行数据比对,缓存数据处理的效率得以提高。
上述实施方式提供的数据的缓存方法,在读取数据时通过缓存切入点触发特定属性的缓存逻辑,基于缓存区域属性和/或远程数据索引生成唯一的缓存标识符,查找特定缓存区域中是否存在业务数据,如果不存在,再将业务数据存储至特定缓存区域中,使得该缓存方式与业务逻辑解耦,从而通用于不同的业务场景。
对应于上述方法实施例,参见图3所示的一种数据的缓存装置的示意图,该装置包括:标识生成模块30,用于响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据所述缓存切入点指示的目标缓存属性和/或所述数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,所述缓存切入点用于触发指定目标缓存属性的缓存逻辑;缓存判断模块32,用于根据所述目标缓存标识符,判断所述目标缓存属性指示的目标缓存区域中是否包含所述目标业务数据;远程读取模块34,用于若不包含,则根据所述目标业务数据的远程数据索引,从目标数据库中获取所述目标业务数据;缓存存储模块36,用于根据所述目标业务数据的数据类型,将所述目标业务数据和所述目标缓存标识符关联存储至所述目标缓存区域中,得到所述目标缓存区域中的目标业务数据。
上述数据的缓存装置,在读取数据时通过缓存切入点触发特定属性的缓存逻辑,生成缓存标识符,查找特定缓存区域中是否存在业务数据,如果不存在,再将业务数据存储至特定缓存区域中,使得该缓存方式与业务逻辑解耦,从而通用于不同的业务场景。
可选的,所述缓存切入点用于触发指定目标缓存属性的缓存装饰器;所述目标缓存属性包括缓存区域属性;所述缓存区域属性用于指示存储所述目标业务数据的目标缓存区域;上述标识生成模块30具体用于:响应于针对目标业务数据的包含缓存切入点的数据读取指令,获取所述数据读取指令指示的远程数据索引;对所述缓存区域属性和/或所述远程数据索引进行哈希编码,得到目标缓存标识符。
可选的,所述缓存区域属性包括至少一个层级缓存区域的缓存区域属性;上述缓存判断模块32具体用于:判断所述缓存区域属性指示的目标缓存区域中是否包含所述目标缓存标识符对应的目标业务数据;其中,所述目标缓存区域为所述缓存区域属性指示的最底层缓存区域。
可选的,上述装置还包括:区域确定模块,用于响应于缓存删除指令,根据所述缓存删除指令指示的待删除缓存区域属性,确定待删除缓存区域;所述待删除缓存区域为所述待删除缓存区域属性指示的最底层缓存区域;列表获取模块,用于获取所述待删除缓存区域对应的预设标识符列表,所述预设标识符列表包括所有存储在所述待删除缓存区域中的第一缓存标识符;批量删除模块,用于根据所述待删除缓存区域对应的预设标识符列表,将所述待删除缓存区域中所有所述第一缓存标识符对应的缓存数据删除。
可选的,上述远程读取模块34具体用于:若不包含,则执行所述数据读取指令指示的数据读取函数,根据所述目标业务数据的远程数据索引,从目标数据库中获取所述目标业务数据。
可选的,上述缓存存储模块36包括:确定单元,用于根据预设的数据类型映射关系,确定所述目标业务数据的数据类型对应的缓存数据类型;转换单元,用于将所述目标业务数据的数据类型转换为所述缓存数据类型,得到缓存数据类型的目标业务数据;绑定单元,用于将所述缓存数据类型的目标业务数据和所述目标缓存标识符绑定存储至所述目标缓存区域中,得到所述目标缓存区域中的目标业务数据。
可选的,上述转换单元具体用于:若所述目标业务数据的数据类型为预设数据类型,则对所述目标业务数据进行序列化处理,得到序列化的目标业务数据;将所述序列化的目标业务数据和转换为所述缓存数据类型,得到缓存数据类型的目标业务数据。
可选的,上述装置还包括:缓存删除模块,用于响应于针对目标业务数据的数据更新指令,将所述目标缓存区域中的所述目标业务数据删除。
本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述数据的缓存方法。该电子设备可以是服务器,也可以是终端设备。
参见图4所示,该电子设备包括处理器400和存储器401,该存储器401存储有能够被处理器400执行的机器可执行指令,该处理器400执行机器可执行指令以实现上述数据的缓存方法。
进一步地,图4所示的电子设备还包括总线402和通信接口403,处理器400、通信接口403和存储器401通过总线402连接。
其中,存储器401可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口403(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线402可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器400可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器400中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器400可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器401,处理器400读取存储器401中的信息,结合其硬件完成前述实施例的方法的步骤,例如:
响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据缓存切入点指示的目标缓存属性和/或数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,缓存切入点用于触发指定目标缓存属性的缓存逻辑;根据目标缓存标识符,判断目标缓存属性指示的目标缓存区域中是否包含目标业务数据;若不包含,则根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据;根据目标业务数据的数据类型,将目标业务数据和目标缓存标识符关联存储至目标缓存区域中,得到目标缓存区域中的目标业务数据。
该方式中,在读取数据时通过缓存切入点触发特定属性的缓存逻辑,生成缓存标识符,查找特定缓存区域中是否存在业务数据,如果不存在,再将业务数据存储至特定缓存区域中,使得该缓存方式与业务逻辑解耦,从而通用于不同的业务场景。
可选的,缓存切入点用于触发指定目标缓存属性的缓存装饰器;目标缓存属性包括缓存区域属性;缓存区域属性用于指示存储目标业务数据的目标缓存区域;响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据缓存切入点指示的目标缓存属性和/或数据读取指令指示的远程数据索引,生成目标缓存标识符,包括:响应于针对目标业务数据的包含缓存切入点的数据读取指令,获取数据读取指令指示的远程数据索引;对缓存区域属性和/或远程数据索引进行哈希编码,得到目标缓存标识符。
可选的,缓存区域属性包括至少一个层级缓存区域的缓存区域属性;根据目标缓存标识符,判断目标缓存属性指示的目标缓存区域中是否包含目标业务数据,包括:判断缓存区域属性指示的目标缓存区域中是否包含目标缓存标识符对应的目标业务数据;其中,目标缓存区域为缓存区域属性指示的最底层缓存区域。
可选的,上述方法还包括:响应于缓存删除指令,根据缓存删除指令指示的待删除缓存区域属性,确定待删除缓存区域;待删除缓存区域为待删除缓存区域属性指示的最底层缓存区域;获取待删除缓存区域对应的预设标识符列表,预设标识符列表包括所有存储在待删除缓存区域中的第一缓存标识符;根据待删除缓存区域对应的预设标识符列表,将待删除缓存区域中所有第一缓存标识符对应的缓存数据删除。
可选的,若不包含,则根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据,包括:若不包含,则执行数据读取指令指示的数据读取函数,根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据。
可选的,根据目标业务数据的数据类型,将目标业务数据和目标缓存标识符关联存储至目标缓存区域中,得到目标缓存区域中的目标业务数据,包括:根据预设的数据类型映射关系,确定目标业务数据的数据类型对应的缓存数据类型;将目标业务数据的数据类型转换为缓存数据类型,得到缓存数据类型的目标业务数据;将缓存数据类型的目标业务数据和目标缓存标识符绑定存储至目标缓存区域中,得到目标缓存区域中的目标业务数据。
可选的,将目标业务数据的数据类型转换为缓存数据类型,得到缓存数据类型的目标业务数据,包括:若目标业务数据的数据类型为预设数据类型,则对目标业务数据进行序列化处理,得到序列化的目标业务数据;将序列化的目标业务数据和转换为缓存数据类型,得到缓存数据类型的目标业务数据。
可选的,在得到目标缓存区域中的目标业务数据之后,方法还包括:响应于针对目标业务数据的数据更新指令,将目标缓存区域中的目标业务数据删除。
本实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述数据的缓存方法,例如:
响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据缓存切入点指示的目标缓存属性和/或数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,缓存切入点用于触发指定目标缓存属性的缓存逻辑;根据目标缓存标识符,判断目标缓存属性指示的目标缓存区域中是否包含目标业务数据;若不包含,则根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据;根据目标业务数据的数据类型,将目标业务数据和目标缓存标识符关联存储至目标缓存区域中,得到目标缓存区域中的目标业务数据。
该方式中,在读取数据时通过缓存切入点触发特定属性的缓存逻辑,生成缓存标识符,查找特定缓存区域中是否存在业务数据,如果不存在,再将业务数据存储至特定缓存区域中,使得该缓存方式与业务逻辑解耦,从而通用于不同的业务场景。
可选的,缓存切入点用于触发指定目标缓存属性的缓存装饰器;目标缓存属性包括缓存区域属性;缓存区域属性用于指示存储目标业务数据的目标缓存区域;响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据缓存切入点指示的目标缓存属性和/或数据读取指令指示的远程数据索引,生成目标缓存标识符,包括:响应于针对目标业务数据的包含缓存切入点的数据读取指令,获取数据读取指令指示的远程数据索引;对缓存区域属性和/或远程数据索引进行哈希编码,得到目标缓存标识符。
可选的,缓存区域属性包括至少一个层级缓存区域的缓存区域属性;根据目标缓存标识符,判断目标缓存属性指示的目标缓存区域中是否包含目标业务数据,包括:判断缓存区域属性指示的目标缓存区域中是否包含目标缓存标识符对应的目标业务数据;其中,目标缓存区域为缓存区域属性指示的最底层缓存区域。
可选的,上述方法还包括:响应于缓存删除指令,根据缓存删除指令指示的待删除缓存区域属性,确定待删除缓存区域;待删除缓存区域为待删除缓存区域属性指示的最底层缓存区域;获取待删除缓存区域对应的预设标识符列表,预设标识符列表包括所有存储在待删除缓存区域中的第一缓存标识符;根据待删除缓存区域对应的预设标识符列表,将待删除缓存区域中所有第一缓存标识符对应的缓存数据删除。
可选的,若不包含,则根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据,包括:若不包含,则执行数据读取指令指示的数据读取函数,根据目标业务数据的远程数据索引,从目标数据库中获取目标业务数据。
可选的,根据目标业务数据的数据类型,将目标业务数据和目标缓存标识符关联存储至目标缓存区域中,得到目标缓存区域中的目标业务数据,包括:根据预设的数据类型映射关系,确定目标业务数据的数据类型对应的缓存数据类型;将目标业务数据的数据类型转换为缓存数据类型,得到缓存数据类型的目标业务数据;将缓存数据类型的目标业务数据和目标缓存标识符绑定存储至目标缓存区域中,得到目标缓存区域中的目标业务数据。
可选的,将目标业务数据的数据类型转换为缓存数据类型,得到缓存数据类型的目标业务数据,包括:若目标业务数据的数据类型为预设数据类型,则对目标业务数据进行序列化处理,得到序列化的目标业务数据;将序列化的目标业务数据和转换为缓存数据类型,得到缓存数据类型的目标业务数据。
可选的,在得到目标缓存区域中的目标业务数据之后,方法还包括:响应于针对目标业务数据的数据更新指令,将目标缓存区域中的目标业务数据删除。
本公开实施例所提供的数据的缓存方法、装置、电子设备及存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本公开实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本公开中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本公开的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本公开的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

Claims (11)

1.一种数据的缓存方法,其特征在于,所述方法包括:
响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据所述缓存切入点指示的目标缓存属性和/或所述数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,所述缓存切入点用于触发指定目标缓存属性的缓存逻辑;
根据所述目标缓存标识符,判断所述目标缓存属性指示的目标缓存区域中是否包含所述目标业务数据;
若不包含,则根据所述目标业务数据的远程数据索引,从目标数据库中获取所述目标业务数据;
根据所述目标业务数据的数据类型,将所述目标业务数据和所述目标缓存标识符关联存储至所述目标缓存区域中,得到所述目标缓存区域中的目标业务数据。
2.根据权利要求1所述的方法,其特征在于,所述缓存切入点用于触发指定目标缓存属性的缓存装饰器;所述目标缓存属性包括缓存区域属性;所述缓存区域属性用于指示存储所述目标业务数据的目标缓存区域;
所述响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据所述缓存切入点指示的目标缓存属性和/或所述数据读取指令指示的远程数据索引,生成目标缓存标识符,包括:
响应于针对目标业务数据的包含缓存切入点的数据读取指令,获取所述数据读取指令指示的远程数据索引;
对所述缓存区域属性和/或所述远程数据索引进行哈希编码,得到目标缓存标识符。
3.根据权利要求2所述的方法,其特征在于,所述缓存区域属性包括至少一个层级缓存区域的缓存区域属性;
所述根据所述目标缓存标识符,判断所述目标缓存属性指示的目标缓存区域中是否包含所述目标业务数据,包括:
判断所述缓存区域属性指示的目标缓存区域中是否包含所述目标缓存标识符对应的目标业务数据;其中,所述目标缓存区域为所述缓存区域属性指示的最底层缓存区域。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
响应于缓存删除指令,根据所述缓存删除指令指示的待删除缓存区域属性,确定待删除缓存区域;所述待删除缓存区域为所述待删除缓存区域属性指示的最底层缓存区域;
获取所述待删除缓存区域对应的预设标识符列表,所述预设标识符列表包括所有存储在所述待删除缓存区域中的第一缓存标识符;
根据所述待删除缓存区域对应的预设标识符列表,将所述待删除缓存区域中所有所述第一缓存标识符对应的缓存数据删除。
5.根据权利要求1所述的方法,其特征在于,所述若不包含,则根据所述目标业务数据的远程数据索引,从目标数据库中获取所述目标业务数据,包括:
若不包含,则执行所述数据读取指令指示的数据读取函数,根据所述目标业务数据的远程数据索引,从目标数据库中获取所述目标业务数据。
6.根据权利要求1所述的方法,其特征在于,所述根据所述目标业务数据的数据类型,将所述目标业务数据和所述目标缓存标识符关联存储至所述目标缓存区域中,得到所述目标缓存区域中的目标业务数据,包括:
根据预设的数据类型映射关系,确定所述目标业务数据的数据类型对应的缓存数据类型;
将所述目标业务数据的数据类型转换为所述缓存数据类型,得到缓存数据类型的目标业务数据;
将所述缓存数据类型的目标业务数据和所述目标缓存标识符绑定存储至所述目标缓存区域中,得到所述目标缓存区域中的目标业务数据。
7.根据权利要求6所述的方法,其特征在于,所述将所述目标业务数据的数据类型转换为所述缓存数据类型,得到缓存数据类型的目标业务数据,包括:
若所述目标业务数据的数据类型为预设数据类型,则对所述目标业务数据进行序列化处理,得到序列化的目标业务数据;
将所述序列化的目标业务数据和转换为所述缓存数据类型,得到缓存数据类型的目标业务数据。
8.根据权利要求1所述的方法,其特征在于,在所述得到所述目标缓存区域中的目标业务数据之后,所述方法还包括:
响应于针对目标业务数据的数据更新指令,将所述目标缓存区域中的所述目标业务数据删除。
9.一种数据的缓存装置,其特征在于,所述装置包括:
标识生成模块,用于响应于针对目标业务数据的包含缓存切入点的数据读取指令,根据所述缓存切入点指示的目标缓存属性和/或所述数据读取指令指示的远程数据索引,生成目标缓存标识符;其中,所述缓存切入点用于触发指定目标缓存属性的缓存逻辑;
缓存判断模块,用于根据所述目标缓存标识符,判断所述目标缓存属性指示的目标缓存区域中是否包含所述目标业务数据;
远程读取模块,用于若不包含,则根据所述目标业务数据的远程数据索引,从目标数据库中获取所述目标业务数据;
缓存存储模块,用于根据所述目标业务数据的数据类型,将所述目标业务数据和所述目标缓存标识符关联存储至所述目标缓存区域中,得到所述目标缓存区域中的目标业务数据。
10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1-8任一项所述的数据的缓存方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1-8任一项所述的数据的缓存方法。
CN202311698104.XA 2023-12-11 2023-12-11 数据的缓存方法、装置、电子设备和存储介质 Pending CN117891840A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311698104.XA CN117891840A (zh) 2023-12-11 2023-12-11 数据的缓存方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311698104.XA CN117891840A (zh) 2023-12-11 2023-12-11 数据的缓存方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN117891840A true CN117891840A (zh) 2024-04-16

Family

ID=90646358

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311698104.XA Pending CN117891840A (zh) 2023-12-11 2023-12-11 数据的缓存方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN117891840A (zh)

Similar Documents

Publication Publication Date Title
CN108255958B (zh) 数据查询方法、装置和存储介质
CN108090064B (zh) 一种数据查询方法、装置、数据存储服务器及系统
US20170337210A1 (en) Dynamic column synopsis for analytical databases
CN109815240B (zh) 用于管理索引的方法、装置、设备和存储介质
CN105005567B (zh) 兴趣点查询方法和系统
CN115039090A (zh) 数据查询方法、装置、服务器及存储介质
CN110659019B (zh) 参数校验方法、装置和服务器
CN111107042A (zh) 报文解析方法、装置、计算机设备和存储介质
CN111813744A (zh) 文件的搜索方法、装置、设备及存储介质
CN114328598A (zh) 基于ClickHouse数据库的pipeline的缓存优化方法及系统
CN116126997B (zh) 一种文献去重存储方法、系统、设备及存储介质
CN111797095B (zh) 索引构建方法和json数据查询方法
CN111382179B (zh) 数据处理方法、装置及电子设备
CN117891840A (zh) 数据的缓存方法、装置、电子设备和存储介质
CN114816219A (zh) 数据写入和读取方法、装置及数据读写系统
CN114238334A (zh) 异构数据编码、解码方法和装置、计算机设备和存储介质
CN112100313B (zh) 一种基于最细粒度切分的数据索引方法及系统
CN110990611B (zh) 图片缓存方法、装置、电子设备及存储介质
CN115729752A (zh) 一种寄存器检查方法及装置、存储介质
CN111339390A (zh) 一种基于固定电话爬取信息的方法、计算设备及存储介质
CN111881220A (zh) 列表存储下的数据操作方法、装置、电子设备和存储介质
CN112860712B (zh) 一种基于区块链的交易数据库构建方法、系统及电子设备
CN110737409A (zh) 数据加载方法、装置和终端设备
US10515012B2 (en) Relationship based cache resource naming and evaluation
CN111290803B (zh) 数据预加载方法、装置、设备及存储介质

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