CN117909367A - 缓存处理方法、电子设备以及存储介质 - Google Patents
缓存处理方法、电子设备以及存储介质 Download PDFInfo
- Publication number
- CN117909367A CN117909367A CN202410101767.7A CN202410101767A CN117909367A CN 117909367 A CN117909367 A CN 117909367A CN 202410101767 A CN202410101767 A CN 202410101767A CN 117909367 A CN117909367 A CN 117909367A
- Authority
- CN
- China
- Prior art keywords
- target
- data table
- cache
- key information
- value
- 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 23
- 238000000034 method Methods 0.000 claims abstract description 299
- 238000013507 mapping Methods 0.000 claims abstract description 66
- 238000010926 purge Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种缓存处理方法、电子设备以及存储介质,该方法包括:根据目标代码中的自动清除缓存注解,构建数据表方法映射关系;数据表方法映射关系是数据表名与缓存方法的映射关系;缓存方法为标记自动清除缓存注解的方法;在检测到对目标数据表执行目标操作的情况下,根据目标数据表以及数据表方法映射关系,确定与目标数据表对应的各目标方法,并构建与每个目标方法对应的目标键信息;目标操作对应的方法为缓存方法,目标操作为新增操作、更新操作和删除操作中的至少一种;根据目标键信息,对缓存中与目标键信息对应的目标值信息进行删除,以实现通过自动清除缓存注解,在对目标表执行目标操作时自动清除缓存,提升开发效率的效果。
Description
技术领域
本申请涉及数据库技术领域,具体涉及一种缓存处理方法、电子设备以及存储介质。
背景技术
缓存是常用的提升应用性能的一种技术,比如:应用需要大量查询数据库的某张表的数据,由于计算机硬件的限制,磁盘访问速度比内存访问速度要慢很多,这种场景下,就可以使用缓存将表内的数据存储在内存中,以达到快速访问的目的。
然而,在应用开发过程中,业务代码时常需要访问数据库,也需要对数据库中的数据表建立缓存,但是,会出现删除了数据表的数据,忘记删除缓存中的对应数据,或者更新了数据表的数据,忘记更新缓存中的对应数据的问题,这就导致了数据表的数据和缓存中的数据不一致的问题,影响应用的使用。
发明内容
鉴于现有技术中的上述缺陷或不足,本申请旨在提供一种缓存处理方法、电子设备以及存储介质,以通过自动清除缓存注解,在对目标表执行目标操作时自动清除缓存,提升开发效率。
本申请实施例提供了一种缓存处理方法,该方法包括:
根据目标代码中的自动清除缓存注解,构建数据表方法映射关系;其中,所述数据表方法映射关系是数据表名与缓存方法的映射关系;所述缓存方法为标记所述自动清除缓存注解的方法;
在检测到对目标数据表执行目标操作的情况下,根据所述目标数据表以及所述数据表方法映射关系,确定与所述目标数据表对应的各目标方法,并构建与每个目标方法对应的目标键信息;其中,所述目标操作对应的方法为缓存方法,所述目标操作为新增操作、更新操作和删除操作中的至少一种;
根据所述目标键信息,对缓存中与所述目标键信息对应的目标值信息进行删除。
可选的,所述构建与每个目标方法对应的目标键信息,包括:
针对每个目标方法,获取与所述目标方法对应的目标类名和目标方法名;
根据所述目标类名和所述目标方法名,构建与所述目标方法对应的目标键信息。
可选的,在检测到对目标数据表执行目标操作的情况下,根据所述目标数据表以及所述数据表方法映射关系,确定与所述目标数据表对应的各目标方法之前,还包括:
在执行所述目标代码中的目标语句的情况下,确定所述目标语句对应的目标数据表,并判断所述目标数据表是否在所述数据表方法映射关系中;
在所述目标数据表在所述数据表方法映射关系中的情况下,确定所述目标数据表对应的方法为缓存方法;
在所述目标数据表对应的方法为缓存方法的情况下,确定检测到对所述目标数据表执行所述目标语句对应的目标操作;
其中,所述目标语句为新增语句、更新语句和删除语句中的至少一种。
可选的,在检测到对目标数据表执行目标操作的情况下,根据所述目标数据表以及所述数据表方法映射关系,确定与所述目标数据表对应的各目标方法之前,还包括:
获取数据表操作日志,解析所述数据表操作日志,确定所述数据表操作日志中的各数据表操作;
针对每个所述数据表操作,判断所述数据表操作对应的目标数据表是否在所述数据表方法映射关系中;
在所述数据表操作对应的目标数据表在所述数据表方法映射关系中的情况下,将所述数据表操作确定为目标操作,并确定检测到对所述目标数据表执行所述目标操作。
可选的,该方法还包括:
在执行查询语句且所述查询语句对应的方法为缓存方法的情况下,将所述查询语句对应的方法确定为待处理方法,并根据所述查询语句以及所述待处理方法,确定待处理类名、待处理方法名以及查询参数;
根据所述待处理类名、所述待处理方法名以及所述查询参数,构建第一键信息,并根据所述待处理类名以及所述待处理方法名,构建第二键信息;
根据所述第一键信息,返回所述查询语句对应的缓存值,并将所述缓存值存储至所述缓存中,在所述缓存中建立所述第一键信息与所述缓存值之间的对应关系和所述缓存值与所述第二键信息之间的对应关系,其中,所述目标键信息属于所述第二键信息。
可选的,所述根据所述第一键信息,返回所述查询语句对应的缓存值,并将所述缓存值存储至所述缓存中,在所述缓存中建立所述第一键信息与所述缓存值之间的对应关系和所述缓存值与所述第二键信息之间的对应关系,包括:
在缓存中存在与所述第一键信息对应的第一值信息的情况下,将所述第一值信息作为所述查询语句对应的缓存值;
在所述缓存中不存在与所述第一键信息对应的第一值信息的情况下,执行所述第一键信息对应的查询语句,返回所述查询语句对应的缓存值,将所述缓存值作为与所述第一键信息对应的第一值信息,并构建所述缓存值与所述第二键信息之间的对应关系。
可选的,所述根据所述目标键信息,对缓存中与所述目标键信息对应的目标值信息进行删除,包括:
根据所述目标操作,确定所述目标数据表中的操作数据;
从所述目标键信息对应的各目标值信息中,确定出与所述操作数据相关的待删除信息,并对缓存中的所述待删除信息删除。
可选的,所述根据目标代码中的自动清除缓存注解,构建数据表方法映射关系,包括:
根据所述目标代码,确定所述目标代码中的各仓库类;
针对每个仓库类,确定所述仓库类对应的数据表名,以及所述仓库类对应的各仓库类方法;
针对每个仓库类方法,判断所述仓库类方法是否标记有自动清除缓存注解;
在所述仓库类方法标记有自动清除缓存注解的情况下,将所述仓库类方法确定为缓存方法,并将所述仓库类方法与所述仓库类方法对应的数据表名的映射关系添加至所述数据表方法映射关系中。
本申请实施例还提供了一种电子设备,所述电子设备包括:
处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如任一实施例所述的缓存处理方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如任一实施例所述的缓存处理方法的步骤。
综上,本申请提出一种缓存处理方法,通过根据目标代码中的自动清除缓存注解,构建数据表方法映射关系,以便于后续通过数据表快速确定使用该数据表的缓存方法,进一步的,在检测到对目标数据表执行目标操作的情况下,根据目标数据表以及数据表方法映射关系,确定与目标数据表对应的各目标方法,并构建与每个目标方法对应的目标键信息,以在对数据表进行增删改操作的情况下,构建目标键信息,根据目标键信息,对缓存中与目标键信息对应的目标值信息进行删除,以在缓存中查找由于数据表变化所影响的数据,实现了通过自动清除缓存注解,在对目标表执行目标操作时自动清除缓存,提升开发效率的效果。
附图说明
图1是本申请实施例提供的一种缓存处理方法的流程图;
图2是本申请实施例提供的一种构建数据表方法映射关系的示意图;
图3是本申请实施例提供的一种缓存删除过程的示意图;
图4是本申请实施例提供的另一种缓存处理方法的流程图;
图5是本申请实施例提供的一种缓存存储过程的示意图;
图6是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1是本申请实施例提供的一种缓存处理方法的流程图。参见图1,该缓存处理方法具体包括:
S110、根据目标代码中的自动清除缓存注解,构建数据表方法映射关系。
其中,目标代码是应用代码。自动清除缓存注解是使对应的缓存方法具备自动清除能力的注解,不会执行,只是对代码进行标注。数据表方法映射关系是数据表名与缓存方法的映射关系,可以基于Map接口存储,以快速通过key(键)获取到对应的value(值),其中,key为数据表名,value为缓存方法列表。缓存方法为标记自动清除缓存注解的方法。缓存方法在第一次执行时,会访问数据库中的数据表,后续执行只要缓存未过期,就会去访问缓存中的数据,具体是对Repository(仓库)类中的CRUD(Create Retrieve Update Delete,增加、查询、更新以及删除)方法使用自动清除缓存注解,即可让该方法具有缓存以及自动清除缓存的功能。
具体的,在执行目标代码之前,解析构建目标代码中的数据表名和缓存方法的对应关系,即数据表方法映射关系。获取各标有自动缓存注解的缓存方法,将缓存方法与对应的数据表名建立映射关系。
在上述示例的基础上,可以通过下述方式来根据目标代码中的自动清除缓存注解,构建数据表方法映射关系:
根据目标代码,确定目标代码中的各仓库类;
针对每个仓库类,确定仓库类对应的数据表名,以及仓库类对应的各仓库类方法;
针对每个仓库类方法,判断仓库类方法是否标记有自动清除缓存注解;
在仓库类方法标记有自动清除缓存注解的情况下,将仓库类方法确定为缓存方法,并将仓库类方法与仓库类方法对应的数据表名的映射关系添加至数据表方法映射关系中。
其中,仓库类为Repository类,是一种JPA(Java Persistence API,Java持久化API)框架提供给开发人员操作数据库表的接口,Repository类实现Repository接口,那么Repository类中的方法即可具有CRUD功能。仓库类方法是仓库类下的各方法。
具体的,读取目标代码,解析得到目标代码中各仓库类。循环处理每个仓库类,具体是针对每个仓库类,确定该仓库类对应的数据表名,并确定该仓库类下的所有方法,作为仓库类方法。循环处理每个仓库类方法,具体是针对每个仓库类方法,只要该仓库类方法标记有自动清除缓存注解就认为该仓库类方法为缓存方法,否则不为缓存方法。将数据表名和缓存方法的映射关系添加至数据表方法映射关系中,以达到构建数据表方法映射关系的目的。在循环完成时,可以得到数据表方法映射关系。构建数据表方法映射关系的示意图如图2所示。
示例性的,在应用启动完成之前,需要解析出目标代码中的数据表名与缓存方法的映射关系Map(数据表方法映射关系),以便后续添加、删除、更新数据库中的数据后,可以通过数据表名找到对应的缓存方法,然后,处理各缓存方法对应的缓存值,这样就可以实现在删除数据库内数据表的数据后,自动删除对应的缓存值的效果。
S120、在检测到对目标数据表执行目标操作的情况下,根据目标数据表以及数据表方法映射关系,确定与目标数据表对应的各目标方法,并构建与每个目标方法对应的目标键信息。
其中,目标操作对应的方法为缓存方法,所述目标操作为新增操作、更新操作和删除操作中的至少一种。目标数据表是执行目标操作所影响的数据表。目标方法是数据表方法映射关系中与目标数据表具有映射关系的各缓存方法。目标键信息是根据目标方法和目标数据表构建的用于定位目标数据表影响的各缓存值的键信息。
具体的,持续分析和检测是否存在目标操作,若存在,则将目标操作对应的数据表作为目标数据表,确定检测到对目标数据表执行目标操作。在此种情况下,将目标数据表在数据表方法映射关系进行比对,确定出与目标数据表对应的各缓存方法为目标方法。并且,针对每个目标方法,根据目标方法的相关信息构建目标键信息,以便于后续确定出与目标键信息对应的各缓存值,并对这些缓存值进行处理。
在上述示例的基础上,可以通过下述方式来构建与每个目标方法对应的目标键信息:
针对每个目标方法,获取与目标方法对应的目标类名和目标方法名;
根据目标类名和目标方法名,构建与目标方法对应的目标键信息。
其中,目标类名是目标方法所在的类名,即className。目标方法名是目标方法的方法名称,即methodName。目标键信息为包含目标类名和目标方法名的信息,例如:将目标类名和目标方法名拼接得到目标键信息。
具体的,针对每个目标方法,都可以通过相同的方式构建与目标方法对应的目标键信息。以其中一个目标方法为例进行说明,解析目标方法,获取与目标方法对应的目标类名和目标方法名,将目标类名和目标方法名进行字符串拼接得到与该目标方法对应的目标键信息。
在上述示例的基础上,在检测到对目标数据表执行目标操作的情况下,根据目标数据表以及数据表方法映射关系,确定与目标数据表对应的各目标方法之前,还可以通过执行语句的判断来确定是否检测到对目标数据表执行目标操作,具体如下:
在执行目标代码中的目标语句的情况下,确定目标语句对应的目标数据表,并判断目标数据表是否在数据表方法映射关系中;
在目标数据表在数据表方法映射关系中的情况下,确定目标数据表对应的方法为缓存方法;
在目标数据表对应的方法为缓存方法的情况下,确定检测到对目标数据表执行目标语句对应的目标操作。
其中,目标语句是对数据库中的数据表中的数据进行增、删或改的语句,目标语句为新增语句、更新语句和删除语句中的至少一种。
具体的,在执行目标代码时,对各语句进行分析,判断这些语句是否为目标语句,即是否为新增语句、更新语句和删除语句中的至少一种。在为目标语句的情况下,分析目标语句得到目标语句对应的数据表,将该数据表作为目标数据表。进一步的,将目标数据表在数据表方法映射关系中查找,以判断目标数据表是否在数据表方法映射关系中。若目标数据表在数据表方法映射关系中,则说明该目标数据表对应的各方法为缓存方法,以便进行后续解析和处理。在目标数据表对应的各方法为缓存方法的情况下,可以确定检测到对目标数据表执行目标语句对应的目标操作。
在上述示例的基础上,在检测到对目标数据表执行目标操作的情况下,根据目标数据表以及数据表方法映射关系,确定与目标数据表对应的各目标方法之前,还可以通过对数据表操作日志进行分析来确定是否检测到对目标数据表执行目标操作,具体如下:
获取数据表操作日志,解析数据表操作日志,确定数据表操作日志中的各数据表操作;
针对每个数据表操作,判断数据表操作对应的目标数据表是否在数据表方法映射关系中;
在数据表操作对应的目标数据表在数据表方法映射关系中的情况下,将数据表操作确定为目标操作,并确定检测到对目标数据表执行目标操作。
其中,数据表操作日志是binlog(逻辑日志),是记录所有数据库中数据表的结构变更以及数据表的数据修改(增、删、改等)的二进制日志。数据表操作是数据表操作日志中共对数据表进行数据修改的操作。
具体的,获取数据表操作日志,并对数据表操作日志进行解析,确定出数据表操作日志中的各数据表操作。针对每个数据表操作,都进行下述操作:确定出数据表操作对应的目标数据表,并判断目标数据表是否在数据表方法映射关系中,若在,则说明数据表操作影响缓存内容,因此,将数据表操作确定为目标操作,并确定检测到对目标数据表执行目标操作。
S130、根据目标键信息,对缓存中与目标键信息对应的目标值信息进行删除。
其中,目标值信息为缓存中与目标键信息对应的缓存值。
具体的,根据目标键信息在缓存中进行匹配,确定与目标键信息对应的各缓存值为目标值信息,将目标值信息删除,以实现对缓存的处理。
在上述示例的基础上,可以通过下述方式来根据目标键信息,对缓存中与目标键信息对应的目标值信息进行删除:
根据目标操作,确定目标数据表中的操作数据;
从目标键信息对应的各目标值信息中,确定出与操作数据相关的待删除信息,并对缓存中的待删除信息删除。
其中,操作数据是目标操作对于目标数据表中进行改变的数据。待删除信息是目标值信息中与操作数据相关的部分。
具体的,分析目标操作,确定目标操作对目标数据表中的改变的数据为操作数据。进一步的,从目标键信息对应的各目标值信息中,按照操作数据进行查找,确定出与操作数据相关的目标值信息为待删除信息,进而,将缓存中的待删除信息删除。
示例性的,当执行了目标代码后,需要拦截SQL(Structured Query Language,结构化查询语言)语句,然后解析SQL语句的类型,只要SQL语句的类型是:新增语句、更新语句或删除语句,则确定该SQL语句为目标语句,并解析出目标语句中的数据表为目标数据表。然后,通过之前构建的数据表方法映射关系,即可通过目标数据表的表名获取与目标数据表对应的缓存方法列表,即目标数据表对应的各缓存方法,这些缓存方法则为目标方法。循环处理每一个目标方法,通过目标方法,可以生成目标方法对应的目标键信息,即根据目标类名和目标方法名,构建与目标方法对应的目标键信息。通过目标键信息在缓存在可以获取这个目标键信息对应的所有缓存值,即目标值信息,后续就可以删除所有的缓存值,缓存删除过程的示意图如图3所示。
本申请实施例提供的缓存处理方法,通过根据目标代码中的自动清除缓存注解,构建数据表方法映射关系,以便于后续通过数据表快速确定使用该数据表的缓存方法,进一步的,在检测到对目标数据表执行目标操作的情况下,根据目标数据表以及数据表方法映射关系,确定与目标数据表对应的各目标方法,并构建与每个目标方法对应的目标键信息,以在对数据表进行增删改操作的情况下,构建目标键信息,根据目标键信息,对缓存中与目标键信息对应的目标值信息进行删除,以在缓存中查找由于数据表变化所影响的数据,实现了通过自动清除缓存注解,在对目标表执行目标操作时自动清除缓存,提升开发效率的效果。
图4是本申请实施例提供的另一种缓存处理方法的流程图。在上述各实施方式的基础上,增加了构建第一键信息和第二键信息的过程以及在执行查询语句时,在返回缓存值的同时构建第一键信息的对应关系以及第二键信息的对应关系的过程,并对上述过程进行了示例性说明。参见图4,该缓存处理方法具体包括:
S210、根据目标代码中的自动清除缓存注解,构建数据表方法映射关系。
S220、在执行查询语句且查询语句对应的方法为缓存方法的情况下,将查询语句对应的方法确定为待处理方法,并根据查询语句以及待处理方法,确定待处理类名、待处理方法名以及查询参数。
其中,查询语句对数据库中的数据表中的数据进行查询的语句。待处理方法是查询语句涉及的缓存方法。待处理类名是待处理方法所在的类名。待处理方法名是待处理方法的方法名称。查询参数是执行待处理方法所使用的参数,即params。
具体的,在执行目标代码时,对各语句进行分析,判断这些语句是否为查询语句。在为查询语句的情况下,判断查询语句所对应的方法是否为缓存方法,若是,则可以从缓存中获取查询语句对应的缓存值,或者,在缓存中新增查询语句对应的缓存值。进一步的,将查询语句对应的方法确定为待处理方法,并对查询语句进行分析,确定待处理方法名以及查询参数,对待处理方法进行分析,确定待处理类名。
S230、根据待处理类名、待处理方法名以及查询参数,构建第一键信息,并根据待处理类名以及待处理方法名,构建第二键信息。
其中,第一键信息是包含待处理类名、待处理方法名以及查询参数的信息,即将待处理类名、待处理方法名以及查询参数拼接得到第一键信息。第二键信息是包含待处理类名以及待处理方法名的信息,即将待处理类名以及待处理方法名拼接得到第二键信息。目标键信息属于第二键信息,用于查找和删除第二键信息对应的各缓存值。
具体的,将待处理类名、待处理方法名以及查询参数进行字符串拼接得到与该查询语句对应的第一键信息。将待处理类名以及待处理方法名进行字符串拼接得到与该查询语句对应的第二键信息。
S240、根据第一键信息,返回查询语句对应的缓存值,并将缓存值存储至缓存中,在缓存中建立第一键信息与缓存值之间的对应关系和缓存值与第二键信息之间的对应关系。
具体的,根据第一键信息可以从缓存中查找与第一键信息对应的缓存值,作为查询语句对应的缓存值,若缓存中不存在该缓存值,则可以执行查询语句,从数据库中的数据中获取查询语句对应的缓存值。进而,还可以在缓存中建立该缓存值与第一键信息之间的对应关系以及该缓存值与第二键信息之间的对应关系。
由此可知,第一键信息对应缓存方法中具体查询参数的缓存值,第二键信息对应缓存方法中各查询参数的缓存值。
在上述示例的基础上,可以通过下述方式来根据第一键信息,返回查询语句对应的缓存值,并将缓存值存储至缓存中,在缓存中建立第一键信息与缓存值之间的对应关系和缓存值与第二键信息之间的对应关系:
在缓存中存在与第一键信息对应的第一值信息的情况下,将第一值信息作为查询语句对应的缓存值;
在缓存中不存在与第一键信息对应的第一值信息的情况下,执行第一键信息对应的查询语句,返回查询语句对应的缓存值,将缓存值作为与第一键信息对应的第一值信息,并构建缓存值与第二键信息之间的对应关系。
其中,第一值信息为缓存值第一键信息对应存储的值信息,即查询语句对应的缓存值,是查询结果。
具体的,根据第一键信息在缓存中进行查找。若存在与第一键信息对应的第一值信息,则将第一值信息作为查询语句对应的缓存值,可以返回该缓存值作为查询语句对应的查询结果。若不存在与第一键信息对应的第一值信息,则说明缓存中没有与查询语句对应的查询结果,即第一次执行该查询语句,因此,执行第一键信息对应的查询语句,得到查询语句对应的缓存值,可以返回该缓存值作为查询语句对应的查询结果,并将缓存值作为与第一键信息对应的第一值信息存储在缓存中,建立该缓存值与第二键信息之间的对应关系。
示例性的,第一次执行查询语句时,由于没有缓存,会直接执行该方法的内部逻辑,也就是查询数据库中数据表的数据作为查询结果,得到查询结果后,会把查询结果缓存到Redis(分布式缓存中间件)。后续再执行该查询语句时,只要查询结果在Redis中没有过期,就可以把Redis中存储的返回值(第一值信息)作为查询语句的返回值,不再执行耗时的数据库查询。这里会存在两种缓存过程:第一种:查询语句对应的缓存方法在某个参数(查询参数)下返回的缓存值,作为第一键信息对应的值信息,即第一值信息,用于将第一值信息和第一键信息对应存储到Redis后,在后续执行时,直接获取Redis中的缓存值即可;第二种:缓存方法对应的所有缓存值与该缓存方法对应存储,即第二键信息对应各查询参数下的第一值信息,用于后续在执行目标操作时,删除第一值信息,缓存存储过程的示意图如图5所示。
S250、在检测到对目标数据表执行目标操作的情况下,根据目标数据表以及数据表方法映射关系,确定与目标数据表对应的各目标方法,并构建与每个目标方法对应的目标键信息。
S260、根据目标键信息,对缓存中与目标键信息对应的目标值信息进行删除。
本申请实施例提供的缓存处理方法,通过在执行查询语句且查询语句对应的方法为缓存方法的情况下,将查询语句对应的方法确定为待处理方法,并根据查询语句以及待处理方法,确定待处理类名、待处理方法名以及查询参数,根据待处理类名、待处理方法名以及查询参数,构建第一键信息,并根据待处理类名以及待处理方法名,构建第二键信息,以便于后续通过第一键信息存储和调取对应的缓存值,通过第二键信息确定相关的全部缓存值,根据第一键信息,返回查询语句对应的缓存值,并将缓存值存储至缓存中,在缓存中建立第一键信息与缓存值之间的对应关系和缓存值与第二键信息之间的对应关系,实现了在查询过程中自动化的写入缓存数据,并建立两种键值对应关系,便于后续自动清除缓存注解,提升开发效率的效果。
图6是本申请实施例提供的一种电子设备的结构示意图。如图6所示,电子设备600包括一个或多个处理器601和存储器602。
处理器601可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备600中的其他组件以执行期望的功能。
存储器602可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器601可以运行所述程序指令,以实现上文所说明的本申请任意实施例的缓存处理方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如初始外参、阈值等各种内容。
在一个示例中,电子设备600还可以包括:输入装置603和输出装置604,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。该输入装置603可以包括例如键盘、鼠标等等。该输出装置604可以向外部输出各种信息,包括预警提示信息、制动力度等。该输出装置604可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图6中仅示出了该电子设备600中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备600还可以包括任何其他适当的组件。
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本申请任意实施例所提供的缓存处理方法的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本申请任意实施例所提供的缓存处理方法的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
需要说明的是,本申请所用术语仅为了描述特定实施例,而非限制本申请范围。如本申请说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。
还需说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”等应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。以上所述仅是本申请的优选实施方式,应当指出,由于文字表达的有限性,而客观上存在无限的具体结构,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进、润饰或变化,也可以将上述技术特征以适当的方式进行组合;这些改进润饰、变化或组合,或未经改进将发明的构思和技术方案直接应用于其他场合的,均应视为本申请的保护范围。
Claims (10)
1.一种缓存处理方法,其特征在于,包括:
根据目标代码中的自动清除缓存注解,构建数据表方法映射关系;其中,所述数据表方法映射关系是数据表名与缓存方法的映射关系;所述缓存方法为标记所述自动清除缓存注解的方法;
在检测到对目标数据表执行目标操作的情况下,根据所述目标数据表以及所述数据表方法映射关系,确定与所述目标数据表对应的各目标方法,并构建与每个目标方法对应的目标键信息;其中,所述目标操作对应的方法为缓存方法,所述目标操作为新增操作、更新操作和删除操作中的至少一种;
根据所述目标键信息,对缓存中与所述目标键信息对应的目标值信息进行删除。
2.根据权利要求1所述的方法,其特征在于,所述构建与每个目标方法对应的目标键信息,包括:
针对每个目标方法,获取与所述目标方法对应的目标类名和目标方法名;
根据所述目标类名和所述目标方法名,构建与所述目标方法对应的目标键信息。
3.根据权利要求1所述的方法,其特征在于,在检测到对目标数据表执行目标操作的情况下,根据所述目标数据表以及所述数据表方法映射关系,确定与所述目标数据表对应的各目标方法之前,还包括:
在执行所述目标代码中的目标语句的情况下,确定所述目标语句对应的目标数据表,并判断所述目标数据表是否在所述数据表方法映射关系中;
在所述目标数据表在所述数据表方法映射关系中的情况下,确定所述目标数据表对应的方法为缓存方法;
在所述目标数据表对应的方法为缓存方法的情况下,确定检测到对所述目标数据表执行所述目标语句对应的目标操作;
其中,所述目标语句为新增语句、更新语句和删除语句中的至少一种。
4.根据权利要求1所述的方法,其特征在于,在检测到对目标数据表执行目标操作的情况下,根据所述目标数据表以及所述数据表方法映射关系,确定与所述目标数据表对应的各目标方法之前,还包括:
获取数据表操作日志,解析所述数据表操作日志,确定所述数据表操作日志中的各数据表操作;
针对每个所述数据表操作,判断所述数据表操作对应的目标数据表是否在所述数据表方法映射关系中;
在所述数据表操作对应的目标数据表在所述数据表方法映射关系中的情况下,将所述数据表操作确定为目标操作,并确定检测到对所述目标数据表执行所述目标操作。
5.根据权利要求1所述的方法,其特征在于,还包括:
在执行查询语句且所述查询语句对应的方法为缓存方法的情况下,将所述查询语句对应的方法确定为待处理方法,并根据所述查询语句以及所述待处理方法,确定待处理类名、待处理方法名以及查询参数;
根据所述待处理类名、所述待处理方法名以及所述查询参数,构建第一键信息,并根据所述待处理类名以及所述待处理方法名,构建第二键信息;
根据所述第一键信息,返回所述查询语句对应的缓存值,并将所述缓存值存储至所述缓存中,在所述缓存中建立所述第一键信息与所述缓存值之间的对应关系和所述缓存值与所述第二键信息之间的对应关系。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一键信息,返回所述查询语句对应的缓存值,并将所述缓存值存储至所述缓存中,在所述缓存中建立所述第一键信息与所述缓存值之间的对应关系和所述缓存值与所述第二键信息之间的对应关系,包括:
在缓存中存在与所述第一键信息对应的第一值信息的情况下,将所述第一值信息作为所述查询语句对应的缓存值;
在所述缓存中不存在与所述第一键信息对应的第一值信息的情况下,执行所述第一键信息对应的查询语句,返回所述查询语句对应的缓存值,将所述缓存值作为与所述第一键信息对应的第一值信息,并构建所述缓存值与所述第二键信息之间的对应关系,其中,所述目标键信息属于所述第二键信息。
7.根据权利要求1所述的方法,其特征在于,所述根据所述目标键信息,对缓存中与所述目标键信息对应的目标值信息进行删除,包括:
根据所述目标操作,确定所述目标数据表中的操作数据;
从所述目标键信息对应的各目标值信息中,确定出与所述操作数据相关的待删除信息,并对缓存中的所述待删除信息删除。
8.根据权利要求1所述的方法,其特征在于,所述根据目标代码中的自动清除缓存注解,构建数据表方法映射关系,包括:
根据所述目标代码,确定所述目标代码中的各仓库类;
针对每个仓库类,确定所述仓库类对应的数据表名,以及所述仓库类对应的各仓库类方法;
针对每个仓库类方法,判断所述仓库类方法是否标记有自动清除缓存注解;
在所述仓库类方法标记有自动清除缓存注解的情况下,将所述仓库类方法确定为缓存方法,并将所述仓库类方法与所述仓库类方法对应的数据表名的映射关系添加至所述数据表方法映射关系中。
9.一种电子设备,其特征在于,所述电子设备包括:
处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1至8任一项所述的缓存处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如权利要求1至8任一项所述的缓存处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410101767.7A CN117909367A (zh) | 2024-01-23 | 2024-01-23 | 缓存处理方法、电子设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410101767.7A CN117909367A (zh) | 2024-01-23 | 2024-01-23 | 缓存处理方法、电子设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117909367A true CN117909367A (zh) | 2024-04-19 |
Family
ID=90683801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410101767.7A Pending CN117909367A (zh) | 2024-01-23 | 2024-01-23 | 缓存处理方法、电子设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117909367A (zh) |
-
2024
- 2024-01-23 CN CN202410101767.7A patent/CN117909367A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522816B (zh) | 基于数据库引擎的数据处理方法、装置、终端及介质 | |
US4916614A (en) | Sentence translator using a thesaurus and a concept-organized co- occurrence dictionary to select from a plurality of equivalent target words | |
US7043690B1 (en) | Method, system, and program for checking contact information | |
WO2019169858A1 (zh) | 一种基于搜索引擎技术的数据分析方法及系统 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN111427784B (zh) | 一种数据获取方法、装置、设备及存储介质 | |
CN112231281A (zh) | 层叠样式表文件的处理方法、装置、设备及存储介质 | |
CN111324607B (zh) | Sql语句复用方法和装置 | |
CN113468204A (zh) | 一种数据查询方法、装置、设备、介质 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
US8433729B2 (en) | Method and system for automatically generating a communication interface | |
EP3816814A1 (en) | Crux detection in search definitions | |
CN110008448B (zh) | 将SQL代码自动转换为Java代码的方法和装置 | |
CN117076491A (zh) | 一种数据处理方法、存储介质与设备 | |
CN112000690A (zh) | 解析结构化操作语句的方法和装置 | |
CN117909367A (zh) | 缓存处理方法、电子设备以及存储介质 | |
CN113821496B (zh) | 数据库迁移方法、系统、设备及计算机可读存储介质 | |
WO2023086322A1 (en) | Late materialization of queried data in database cache | |
CN114896269A (zh) | 结构化查询语句检测方法、装置、电子设备及存储介质 | |
CN114817990A (zh) | 对敏感数据的管理方法、装置、电子设备及存储介质 | |
US11163876B2 (en) | Guided security analysis | |
CN113626870A (zh) | 访问控制方法、装置、电子设备及存储介质 | |
CN112069198B (zh) | Sql解析优化方法和装置 | |
JP2778025B2 (ja) | 共起関係辞書の学習方法 | |
CN112784143B (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 |