CN112019619A - 分布式缓存处理方法、装置、设备及存储介质 - Google Patents
分布式缓存处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112019619A CN112019619A CN202010880801.7A CN202010880801A CN112019619A CN 112019619 A CN112019619 A CN 112019619A CN 202010880801 A CN202010880801 A CN 202010880801A CN 112019619 A CN112019619 A CN 112019619A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- key value
- loading
- distributed
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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/23—Updating
-
- 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
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Abstract
本发明涉及云技术领域,公开了一种分布式缓存处理方法、装置、设备及存储介质。分布式缓存处理方法包括:监测是否存在缓存数据加载请求,若存在缓存数据加载请求,则采用AOP拦截提取加载请求中缓存方法的缓存注解并进行解析,得到缓存key值对应的Spring EL表达式;对Spring EL表达式进行hash映射,生成缓存key值;根据缓存key值,遍历本地缓存并判断本地缓存中是否存在与缓存key值对应的缓存对象,当本地缓存中存在与缓存key值对应的缓存对象时,开启自动异步加载并返回缓存数据。本发明解决了Spring Cache技术不能根据缓存过期自动异步加载数据的技术问题,能根据缓存过期自动异步加载数据,支持缓存数据null的处理,从而提高分布式缓存处理效率。
Description
技术领域
本发明涉及云技术领域,尤其涉及一种分布式缓存处理方法、装置、设备及存储介质。
背景技术
快速发展的互联网时代,海量网络请求的剧增,在保证服务的高可用和优质的用户体验的同时,如何降低请求延迟时间,提升系统的吞吐量,一直成为业界关注的焦点。缓存技术有效地减轻了业务端的负载成为解决这一问题的最有效的技术之一。
为实现缓存与业务逻辑的解耦,Spring Cache技术结合AOP与Annotation等技术有效地解决了这类问题,但是Spring Cache技术仍无法根据自定义的Spring EL表达式来动态的生成缓存key,不能根据缓存过期自动异步加载数据,支持缓存数据null的处理,会造成数据源高负荷过载而导致资源浪费或者宕机。
发明内容
本发明的主要目的在于解决Spring Cache技术不能根据缓存过期自动异步加载数据的技术问题。
本发明第一方面提供了一种分布式缓存处理方法,包括:
监测是否存在缓存数据加载请求;
若存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
解析所述缓存注解,得到Spring EL表达式;
对所述Spring EL表达式进行hash映射,生成缓存key值;
基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象;
若所述本地缓存中存在与所述缓存key值对应的缓存对象,则基于所述缓存对象开启自动异步加载,并返回所述缓存对象对应的缓存数据。
可选的,在本发明第一方面的第一种实现方式中,所述若存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解包括:
若存在缓存数据加载请求,则通过AOP拦截获取所述缓存加载请求;
基于所述缓存加载请求,确定所述缓存加载请求中对应的缓存方法;
基于所述缓存方法,提取所述缓存方法携带的缓存注解。
可选的,在本发明第一方面的第二种实现方式中,所述解析所述缓存注解,得到Spring EL表达式包括:
解析所述缓存注解的属性信息,得到解析结果;
基于所述解析结果,获得所述缓存注解的属性key值;
提取所述属性key值中的hash函数表达式,并将所述hash函数表达式作为所述缓存key值对应的Spring EL表达式。
可选的,在本发明第一方面的第三种实现方式中,所述对所述Spring EL表达式进行hash映射,生成所述缓存key值包括:
基于所述Spring EL表达式,确定所述缓存方法的参数值;
解析所述缓存注解的属性key值,确定所述属性key值对应的hash函数;
基于所述hash函数,对所述缓存方法的参数值进行hash计算,得到hash映射;
基于所述hash映射,对所述缓存方法的参数值进行hash赋值,以生成所述缓存key值。
可选的,在本发明第一方面的第四种实现方式中,在所述基于所述缓存对象,开启自动异步加载并返回所述缓存对象对应的缓存数据之后,还包括:
若所述本地缓存中不存在与所述缓存key值对应的缓存对象,则返回源数据库获取与所述缓存key值对应缓存对象的缓存数据;
利用预置池化包装器对所述缓存数据进行封装,并将封装后的所述缓存数据存储至预置数据库。
可选的,在本发明第一方面的第五种实现方式中,所述若所述本地缓存中存在与所述缓存key值对应的缓存对象,则基于所述缓存对象开启自动异步加载,并返回所述缓存对象对应的缓存数据包括:
若本地缓存中存在与所述缓存key值对应的缓存对象且所述缓存对象对应的缓存数据非空,则解析所述缓存注解的加载属性,得到所述加载属性的值;
基于所述加载属性的值,判断所述缓存对象是否需要自动异步加载;
若是,则返回所述缓存对象对应的缓存数据;
若否,则判断所述缓存对象是否过期;
若所述缓存对象未过期,则返回所述缓存数据;若所述缓存对象已过期,则发起异步刷新重新获取缓存数据并返回所述缓存对象对应的缓存数据。
可选的,在本发明第一方面的第六种实现方式中,在所述基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象之后,还包括:
接收数据获取请求,并统计数据获取请求的数量以及记录接收到所述各数据获取请求的时间T1;
若存在多个数据获取请求,则记录响应第一个数据获取请求返回数据的时间T2;
判断所述时间T2与所述时间T1之间的时间差值是否超过预置阈值;
若是,则确定除第一个数据获取请求之外的其他数据获取请求对应的数据获取位置,并从所述数据获取位置获取对应数据。
本发明第二方面提供了一种分布式缓存处理装置,包括:
监测模块,用于监测是否存在缓存数据加载请求;
提取模块,用于当存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
解析模块,用于解析所述缓存注解,得到Spring EL表达式;
生成模块,用于对所述Spring EL表达式进行hash映射,生成缓存key值;
判断模块,用于基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象;
异步加载模块,用于当所述本地缓存中存在与所述缓存key值对应的缓存对象,则基于所述缓存对象,开启自动异步加载并返回所述缓存对象对应的缓存数据。
可选的,在本发明第二方面的第一种实现方式中,所述提取模块具体用于:
若存在缓存数据加载请求,则通过AOP拦截获取所述缓存加载请求;
基于所述缓存加载请求,确定所述缓存加载请求中对应的缓存方法;
基于所述缓存方法,提取所述缓存方法携带的缓存注解。
可选的,在本发明第二方面的第二种实现方式中,所述解析模块具体用于:
解析所述缓存注解的属性信息,得到解析结果;
基于所述解析结果,获得所述缓存注解的属性key值;
提取所述属性key值中的hash函数表达式,并将所述hash函数表达式作为所述缓存key值对应的Spring EL表达式。
可选的,在本发明第二方面的第三种实现方式中,所述生成模块具体用于:
基于所述Spring EL表达式,确定所述缓存方法的参数值;
解析所述缓存注解的属性key值,确定所述属性key值对应的hash函数;
基于所述hash函数,对所述缓存方法的参数值进行hash计算,得到hash映射;
基于所述hash映射,对所述缓存方法的参数值进行hash赋值,以生成所述缓存key值。
可选的,在本发明第二方面的第四种实现方式中,所述分布式缓存处理装置,还包括:
第一获取模块,用于当所述本地缓存中不存在与所述缓存key值对应的缓存对象时,返回源数据库获取与所述缓存key值对应缓存对象的缓存数据;
封装模块,用于利用预置池化包装器对所述缓存数据进行封装,并将封装后的所述缓存数据存储至预置数据库。
可选的,在本发明第二方面的第五种实现方式中,所述异步加载模块,用于具体用于:
若本地缓存中存在与所述缓存key值对应的缓存对象且所述缓存对象对应的缓存数据非空,则解析所述缓存注解的加载属性,得到所述加载属性的值;
基于所述加载属性的值,判断所述缓存对象是否需要自动异步加载;
若是,则返回所述缓存对象对应的缓存数据;
若否,则判断所述缓存对象是否过期;
若所述缓存对象未过期,则返回所述缓存数据;若所述缓存对象已过期,则发起异步刷新重新获取缓存数据并返回所述缓存对象对应的缓存数据。
可选的,在本发明第二方面的第六种实现方式中,所述分布式缓存处理装置,还包括:
统计模块,用于接收数据获取请求,并统计所述数据获取请求的数量以及记录接收到所述各数据获取请求的时间T1;
记录模块,用于当存在多个数据获取请求时,记录响应第一个数据获取请求返回数据的时间T2;
判断模块,用于判断所述时间T2与所述时间T1之间的时间差值是否超过预置阈值;
第二获取模块,用于当所述时间T2与所述时间T1之间的时间差值超过预置阈值,确定除第一个数据获取请求之外的其他数据获取请求对应的数据获取位置,并从所述数据获取位置获取对应数据。
本发明第三方面提供了一种分布式缓存处理设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述分布式缓存处理设备执行上述的分布式缓存处理方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的分布式缓存处理方法。
本发明的技术方案中,获取缓存方法,并在该缓存方法中添加缓存注解,当调用该缓存方法时,根据预置的Spring EL表达式生成缓存key,解析该缓存key值,获取方法对应的缓存数据,若该缓存数据被获取,则判断该缓存数据是否为空,并进行对应操作获取返回数据,解决了Spring Cache技术不能根据缓存过期自动异步加载数据技术问题,根据缓存过期自动异步加载数据,支持缓存数据null的处理,减少系统压力,提高数据处理能力。
附图说明
图1为本发明实施例中分布式缓存处理方法的第一个实施例示意图;
图2为本发明实施例中分布式缓存处理方法的第二个实施例示意图;
图3为本发明实施例中分布式缓存处理方法的第三个实施例示意图;
图4为本发明实施例中分布式缓存处理方法的第四个实施例示意图;
图5为本发明实施例中分布式缓存处理方法的第五个实施例示意图;
图6为本发明实施例中分布式缓存处理装置的第一个实施例示意图;
图7为本发明实施例中分布式缓存处理装置的第二个实施例示意图;
图8为本发明实施例中分布式缓存处理设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种分布式缓存处理方法、装置、设备及存储介质,用于解决目前Spring Cache技术不能根据缓存过期自动异步加载数据技术问题,根据缓存过期自动异步加载数据,支持缓存数据null的处理,减少系统压力,提高数据处理能力。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中分布式缓存处理方法的第一个实施例包括:
101、监测是否存在缓存数据加载请求;
本实施例中,检测是否存在AOP拦截请求,确定需要缓存的方法,并在该方法上添加自定义的缓存注解。
本实施例中,AOP(面向切面编程)面向对象的特点是继承、多态和封装。也就是说,让不同的类设计不同的方法,便于代码分散到一个个的类中,降低代码的复杂程度,使类可重用。也可以说它是拦截者框架Interceptor,想要对一些方法的参数进行监控,监控后可以像日志一样的给我们,程序运行时调用一个一个方法,我们在这些方法的前后插入方法,就像切面一样切进去插入拦截方法实现监控。
102、若存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
本实施例中,若存在AOP拦截请求,则在获取方法拦截链的对应方法上的注解@Cahce,比如,@Cache(key={“hash(XXX)”autoLoad=false,expire=60})。其中,属性key对应的Spring EL表达式为自定义存入缓存的key值,hash表示一种生产缓存key对应的方法。
本实施例中,当方法被调用时,会被这个切面拦截,因此就可以根据拦截请求拦截到这个注解对应的方法,以此来确定缓存注解对应的方法。
103、解析所述缓存注解,得到Spring EL表达式;
本实施例中,解析所述缓存注解,根据缓存注解的属性key值对应的函数@Cache(key={“hash(XXX)”autoLoad=false,expire=60}),确定该注解对应方法的参数值。其中,这些参数值具体包括哪些内容是需要用户根据特定Spring EL表达式获取。添加是用户执行的,需要告诉系统用户要如何获取。
本实施例中,根据hash函数表达式确定属性key对应的Spring EL表达式,其中,可以通过Spring EL表达式获取所述缓存方法的参数值。
本实施例中,Spring EL表达式是Spring表达式语言,支持在xml和注解中使用表达式,类似于JSP的EL,JSTL表达式语言。Spring开发中我们会经常涉及到调用各种资源的情况,包含普通文件、网址、正则表达式、系统变量、其他Bean的一些属性、配置文件、集合等等,我们就可以使用Spring的表达式语言实现资源的注入。Spring EL的格式为#{SpELexpression}。Spring表达式主要写在注解@Value的参数中,它的作用是通过spring把值注入给某个属性。
104、对所述Spring EL表达式进行hash映射,生成缓存key值;
本实施例中,解析注解的属性key值对应的函数表达式,对对应方法的参数值进行hash映射,生成缓存的key值。
本实施例中,解析缓存注解的表达式,生成对应key值,其中,缓存注解的表达式是一种表达式语言,全名为Spring Expression Language。
本实施例中,解析缓存注解的表达式,生成对应key值是指拦截到缓存注解时,获取其key过期,根据hash函数,对象方法中的属性name,进行hash赋值,得到的结果作为缓存的key值。
本实施例中,通过对该缓存注解的对应key值进行解析,获取与所述缓存注解对应的缓存数据。比如,AOP切面拦截请求,获取目标方法上@Cache(key=hash(#{arg[0])},autoload=true,expire=60s)注解,根据Spring EL表达式获取方法参数值,并通过解析其属性key值对应的函数,对方法参数值进行hash映射,生产缓存的key值。同时,判断缓存中key值是否存在;若所述缓存中不存在key值,则回源数据库获取数据,通过自定义池化的包装器,对获取的数据进行封装,生产包装对象,并设置加载时的时间。然后入缓存。若所述缓存中存在key值:根据通过缓存对象加载时的时间T0,与当前时间T1,有效时间expier,判断缓存对象是否已经过期,即:当前数据T1-T0<expire,不过期直接返回;如过期,同上处理。同时,若autoload=true,开启的异步检查线程,会自动检测该缓存是否过期,如果过期,异步加载线程会自动更新过期的缓存数据。
105、基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象;
本实施例中,缓存key值与缓存注解对应方法的返回值,是映射的关系,所以可以根据缓存key值,遍历本地缓存,以判断本地缓存中是否存在与缓存key值对应的缓存对象,并判断本地缓存中是否存在与所述缓存key值对应的缓存对象。
本实施例中,遍历(Traversal)是指沿着某条搜索路线,依次对树(或图)中每个节点均做一次访问。访问结点所做的操作依赖于具体的应用问题,具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。
106、若所述本地缓存中存在与所述缓存key值对应的缓存对象,则基于所述缓存对象开启自动异步加载,并返回所述缓存对象对应的缓存数据。
本实施例中,若本地缓存中存在与缓存注解key值对应的缓存对象,且当对应缓存对象对应的缓存数据非空,则返回对应的缓存数据。
本发明实施例中,通过获取缓存方法,并在该缓存方法中添加缓存注解,当调用该缓存方法时,根据预置的Spring EL表达式生成缓存key,解析该缓存key值,获取方法对应的缓存数据,若该缓存数据被获取,则判断该缓存数据是否为空,并进行对应操作获取返回数据,解决了Spring Cache技术不能根据缓存过期自动异步加载数据技术问题,根据缓存过期自动异步加载数据,支持缓存数据null的处理,减少系统压力,提高数据处理能力。
请参阅图2,本发明实施例中分布式缓存处理方法的第二个实施例包括:
201、监测是否存在缓存数据加载请求;
202、若存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
203、解析所述缓存注解,得到Spring EL表达式;
204、对所述Spring EL表达式进行hash映射,生成缓存key值;
205、基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象;
本实施例中,判断与所述缓存key值对应的缓存对象。
206、若所述本地缓存中不存在与所述缓存key值对应的缓存对象,则返回源数据库获取与所述缓存key值对应缓存对象的缓存数据;
本实施例中,若本地缓存中不存在与该缓存key值对应的缓存对象,则去数据库中重新获取数据。
207、利用预置池化包装器对所述缓存数据进行封装,并将封装后的所述缓存数据存储至预置数据库;
本实施例中,根据根据池化包装器对该缓存数据进行封装,生产包装对象,设置加载时的时间将缓存数据存储至缓存。
本实施例中,若key值不存在,则回源数据库中获取数据,通过自定义池化的包装器,对获取的数据进行封装,生产包装对象,并设置加载时的时间。然后入缓存。
本实施例中,通过自定义一个包装器,并通过类似于数据库连接池的池化技术池化该包装器,避免包装回源数据重新创建,可以减少对象创建时间及系统资源消耗。
208、接收数据获取请求,并统计所述数据获取请求的数量以及记录接收到所述各数据获取请求的时间T1;
本实施例中,接收数据获取请求,并统计对应请求的数量。接收用户获取数据的请求,可以有多个也可以只有一个,但是,为了不浪费系统资源减少并发数,所以增加等待机制,避免频发的磁盘IO。因此需要对数据获取请求的数量进行判断。
209、若存在多个数据获取请求,则记录响应第一个数据获取请求返回数据的时间T2;
本实施例中,如果存在多个数据获取请求,则先让第一个请求去调数据,其它请求则等待其正确返回后,直接从内存中获取,如果在特定的时限没有返回数据,则其他等待的线程去数据层获取数据。所以,要对第一个数据获取请求返回数据的时间进行判断,看第一个数据获取请求返回数据的时间是否在预设时间内。
210、判断所述时间T2与所述时间T1之间的时间差值是否超过预置阈值;
本实施例中,判断第一个数据获取请求返回数据的时间T2与接收到所述各数据获取请求的时间T1之间的差值是否超过预置阈值,以此来确定其他的数据获取请求获取数据的位置,比如,内存或者数据层。
211、若是,则确定除第一个数据获取请求之外的其他数据获取请求对应的数据获取位置,并从所述数据获取位置获取对应数据。
本实施例中,若第一个数据获取请求返回数据的时间T2超过了预置时间阈值,那么其他数据获取请求从预置数据层获取数据。
本发明实施例中,通过获取缓存方法,并在该缓存方法中添加缓存注解,当调用该缓存方法时,根据预置的Spring EL表达式生成缓存key,解析该缓存key值,获取方法对应的缓存数据,若该缓存数据被获取,则判断该缓存数据是否为空,并进行对应操作获取返回数据,解决了Spring Cache技术不能根据缓存过期自动异步加载数据技术问题,根据缓存过期自动异步加载数据,支持缓存数据null的处理,减少系统压力,提高数据处理能力。
请参阅图3,本发明实施例中分布式缓存处理方法的第三个实施例包括:
301、监测是否存在缓存数据加载请求;
302、若存在缓存数据加载请求,则通过AOP拦截获取缓存加载请求;
本实施例中,利用Spring切面技术,根据预置自定义信息,对缓存注解的切面进行拦截。
303、基于所述缓存加载请求,确定所述缓存加载请求中对应的缓存方法;
本实施例中,根据缓存注解的切面获取缓存key过期和hash函数。
304、基于所述缓存方法,提取所述缓存方法携带的缓存注解;
本实施例中,缓存注解是根据用户的需求,自定义配置并添加在对应的缓存方法上,在确定缓存方法之后,就可以提取该缓存方法上携带的缓存注解的信息。比如,@Cache(key={“hash(XXXX)”autoLoad=false,expire=60),其中属性key对应的Spring EL表达式为自定义存入缓存中的key值,hash表示一种生产缓存key对应的方法。
305、解析所述缓存注解,得到Spring EL表达式;
306、对所述Spring EL表达式进行hash映射,生成所述缓存key值;
307、基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象,若是,则基于所述缓存对象,开启自动异步加载并返回所述缓存对象对应的缓存数据。
本发明实施例提供了详细的AOP拦截提取所述加载请求中缓存方法的缓存注解,并通过解析所述缓存注解,最后得到缓存key值对应的Spring EL表达式。解决了SpringCache技术不能根据缓存过期自动异步加载数据技术问题,减少系统压力,提高数据处理能力。
请参阅图4,本发明实施例中分布式缓存处理方法的第四个实施例包括:
401、监测是否存在缓存数据加载请求;
402、若存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
403、解析所述缓存注解,得到Spring EL表达式;
404、基于所述Spring EL表达式,确定所述缓存方法的参数值;
本实施例中,在拦截缓存注解时,可以根据缓存注解确定对应的自定义函数,如hash(XXX)。对hash方法中的方法参数进行赋值,并通过解析其属性key值对应的函数,对方法参数值进行hash映射,生产缓存的key值。
405、解析所述缓存注解的属性key值,确定所述属性key值对应的hash函数;
本实施例中,解析缓存注解的属性key值,以确定该属性key值对应的hash函数。
406、基于所述hash函数,对所述缓存方法的参数值进行hash计算,得到hash映射;
本实施例中,对该缓存方法携带的缓存注解的属性key值对应的函数进行解析,并对缓存方法的参数值进行hash映射。
本实施例中,hash映射又叫哈希映射,哈希即Hash,一般翻译为散列的意思,简单而言其实就是通过一个函数,将一个值映射成另一个更好的值。这个更好,是一个比较抽象的概念。可以是把一个很大的数,映射到一个小的区间内,以作为数组索引;也可以是将一个非数值型数据,如字符串等映射成一个数值型数据,以实现更好的索引或者判重;又或者将一段很长的信息加密成一段短小的密文,以实现信息的保密传输等等。其中,对缓存方法的参数值进行hash映射的公式如下:
x=H(k)
其中,k表示原始值或者哈希键值,H表示映射函数,x表示将哈希键映射后的结果值。
407、基于所述hash映射,对所述缓存方法的参数值进行hash赋值,以生成所述缓存key值;
本实施例中,根据hash映射,生成缓存方法对应key值。
408、基于所述缓存key值,遍历本地缓存并断所述本地缓存中是否存在与所述缓存key值对应的缓存对象;
409、若本地缓存中存在与所述缓存key值对应的缓存对象且所述缓存对象对应的缓存数据非空,则解析所述缓存注解的加载属性,得到所述加载属性的值;
本实施例中,若本地缓存中存在与该缓存key值对应的缓存对象且该缓存对象对应的缓存数据非空,则解析该缓存注解的autoLoad加载属性,确定加载属性的值。比如,根据缓存注解中autoLoad加载属性=true or false,和expire数据与缓存对象的加载时间,当autoload为true,(当前系统数据>=缓存加载时间+expire时间),则缓存需要异步加载数据。
410、基于所述加载属性的值,判断所述缓存对象是否需要自动异步加载。
本实施例中,根据加载属性autoload的值,判断对应的缓存对象是否需要自动异步加载。
本实施例中,自动异步加载是指异步加载数据,也即发起异步刷新。异步刷新是指,后台有一个守护线程检查那些缓存值是否过期。如果过期就去数据库中加载数据,并存入缓存。
本实施例中,若缓存对象需要自动异步加载,则返回所述缓存对象对应的缓存数据;若该加载属性autoload=ture,则对应的缓存对象需要自动异步加载数据,把相关的加载特性数据异步保存至自动刷新队列,由自动异步加载处理器autohandler处理,并返回对应的缓存数据。
本实施例中,根据@Cahce注解中autoLoad加载属性true or false,和expire数据与key对应的缓存对象的加载时的时间,当autoload为true,(当前系统数据>=缓存加载时间+expire时间),则缓存需要异步加载数据。
本实施例中,若所述加载属性为false,则确定所述缓存对象不需要自动异步加载;若该加载属性autoload=false,则对应的缓存对象不需要自动异步加载数据。
若所述缓存对象不进行自动异步加载,则判断所述缓存对象是否过期;
本实施例中,若对应的缓存对象不需要自动异步加载数据,则判断缓存对象是否过期,也即缓存数据不存在。
本实施例中,若缓存对象不需要自动异步加载,则判断所述缓存对象是否过期,如果该缓存方法的key存在,则确定缓存数据加载时的时间T0与当前时间T1的差值T,并将该差值T与缓存方法对应的有效时间expier进行比较,若该差值T小于缓存方法对应的有效时间expier,则缓存数据未过期
本实施例中,若该差值T大于所述缓存方法对应的有效时间expier,则所述缓存数据已经过期。比如,平时我们设定一个缓存的过期时间时,可能有一些会设置1分钟,5分钟,并发很高时可能会出在某一个时间同时生成了很多的缓存,并且过期时间都一样,这个时候就可能导致一旦过期时间到,这些缓存会同时过期,请求全部转发到DB,DB可能会压力过重,甚至造成服务不可用的情况。
本实施例中,若所述缓存对象未过期,则直接返回所述缓存数据;若对应缓存数据未过期,则直接返回缓存key对应的值。若所述缓存对象已过期,则发起异步刷新重新获取缓存数据并返回所述缓存对象对应的缓存数据。
本实施例中,如果该缓存数据已经过期,则发起异步刷新。其中,异步刷新是指不规定一个固定的刷新周期,将每一行分来来看,只要在2ms内对这一行刷新一遍就行,要使每行能在2ms内刷新一次,即每隔(2ms/64us)刷新一行,也就是对这一行来说,下一次对它进行刷新的间隔,期间要经过64次内存刷新周期才又轮得到它。
在本实施例中,详细描述服务器对Spring EL表达式进行hash映射,生成缓存key值,并根据缓存key值,遍历本地缓存,确定当本地缓存中存在与缓存key值对应的缓存对象且缓存对象对应的缓存数据非空的情况下,如何开启自动异步加载并返回所述缓存数据的。根据缓存过期自动异步加载数据,支持缓存数据null的处理,提升分布式缓存处理效率。
请参阅图5,本发明实施例中分布式缓存处理方法的第四个实施例包括:
501、监测是否存在缓存数据加载请求;
502、若存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
503、解析所述缓存注解的属性信息,得到解析结果;
本实施例中,解析缓存注解中的属性信息,获取该缓存注解的属性key值,比如@Cache(key={“hash(XXXX)”autoLoad=false,expire=60),其中,hash表示一种生产缓存key对应的方法,autoLoad缓存加载属性,可以根据autoLoad的值判断缓存对象是否需要自动异步加载,expire为缓存对象的有效时间,在这个时间内,缓存对象是有效的。
504、基于所述解析结果,获得所述缓存注解的属性key值;
本实施例中,AOP切面拦截请求,获取对应缓存方法上的@Cache,比如(key={“hash(XXX)”autoLoad=false,expire=60})注解,确定属性key值对应的函数表达式,比如key=hash(#{arg[0])}。其中,hash表示一种生产缓存key对应的方法。
505、提取所述属性key值中的hash函数表达式,并将所述hash函数表达式标记为所述缓存key值对应的Spring EL表达式;
506、基于所述缓存key值,遍历本地缓存,若所述本地缓存中存在与所述缓存key值对应的缓存对象则开启自动异步加载,并返回所述缓存对象对应的缓存数据。
本发明实施例中,通过解析缓存注解的属性信息,获得缓存注解的属性key值,提取属性key值中的hash函数表达式,并将hash函数表达式作为缓存key值对应的Spring EL表达式,解决了Spring Cache技术不能根据缓存过期自动异步加载数据技术问题,减少系统压力,提高数据处理能力。
上面对本发明实施例中分布式缓存处理方法进行了描述,下面对本发明实施例中分布式缓存处理装置进行描述,请参阅图6,本发明实施例中分布式缓存处理装置第一个实施例包括:
监测模块601,用于监测是否存在缓存数据加载请求;
提取模块602,用于当存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
解析模块603,用于解析所述缓存注解,得到Spring EL表达式;
生成模块604,用于对所述Spring EL表达式进行hash映射,生成缓存key值;
判断模块605,用于基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象;
异步加载模块606,用于当所述本地缓存中存在与所述缓存key值对应的缓存对象,则基于所述缓存对象开启自动异步加载,并返回所述缓存对象对应的缓存数据。
本发明实施例中,通过获取缓存方法,并在该缓存方法中添加缓存注解,当调用该缓存方法时,根据预置的Spring EL表达式生成缓存key,解析该缓存key值,获取方法对应的缓存数据,若该缓存数据被获取,则判断该缓存数据是否为空,并进行对应操作获取返回数据,解决了Spring Cache技术不能根据缓存过期自动异步加载数据技术问题,根据缓存过期自动异步加载数据,支持缓存数据null的处理,减少系统压力,提高数据处理能力。
请参阅图7,本发明实施例中分布式缓存处理装置的第二个实施例包括:
监测模块701,用于监测是否存在缓存数据加载请求;
提取模块702,用于当存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
解析模块703,用于解析所述缓存注解,得到Spring EL表达式;
生成模块704,用于对所述Spring EL表达式进行hash映射,生成缓存key值;
判断模块705,用于基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象;
异步加载模块706,用于当所述本地缓存中存在与所述缓存key值对应的缓存对象,则基于所述缓存对象开启自动异步加载,并返回所述缓存对象对应的缓存数据;
第一获取模块707,用于当所述本地缓存中不存在与所述缓存key值对应的缓存对象时,返回源数据库获取与所述缓存key值对应缓存对象的缓存数据;
封装模块708,用于利用预置池化包装器对所述缓存数据进行封装,并将封装后的所述缓存数据存储至预置数据库;
统计模块709,用于接收数据获取请求,并统计所述数据获取请求的数量以及记录接收到所述各数据获取请求的时间T1;
确定模块710,用于若存在多个数据获取请求,则确定第一个所述数据获取请求返回数据的时间T2;
第二获取模块711,用于基于所述时间T2,确定除第一个所述数据获取请求之外,其他所述数据获取请求对应的数据获取位置,获取对应数据。
可选的,所述提取模块702具体用于:
若存在缓存数据加载请求,则通过AOP拦截获取所述缓存加载请求;
基于所述缓存加载请求,确定所述缓存加载请求中对应的缓存方法;
基于所述缓存方法,提取所述缓存方法携带的缓存注解。
其中,所述解析模块703具体用于:
解析所述缓存注解的属性信息,得到解析结果;
基于所述解析结果,获得所述缓存注解的属性key值;
提取所述属性key值中的hash函数表达式,并将所述hash函数表达式作为所述缓存key值对应的Spring EL表达式。
可选的,所述生成模块704具体用于:
基于所述Spring EL表达式,确定所述缓存方法的参数值;
解析所述缓存注解的属性key值,确定所述属性key值对应的hash函数;
基于所述hash函数,对所述缓存方法的参数值进行hash计算,得到hash映射;
基于所述hash映射,对所述缓存方法的参数值进行hash赋值,以生成所述缓存key值。
可选的,所述异步加载模块706具体用于:
若本地缓存中存在与所述缓存key值对应的缓存对象且所述缓存对象对应的缓存数据非空,则解析所述缓存注解的加载属性,得到所述加载属性的值;
基于所述加载属性的值,判断所述缓存对象是否需要自动异步加载;
若是,则返回所述缓存对象对应的缓存数据;
若否,则判断所述缓存对象是否过期;
若所述缓存对象未过期,则返回所述缓存数据;若所述缓存对象已过期,则发起异步刷新重新获取缓存数据并返回所述缓存对象对应的缓存数据。
本发明实施例中,通过获取缓存方法,并在该缓存方法中添加缓存注解,当调用该缓存方法时,根据预置的Spring EL表达式生成缓存key,解析该缓存key值,获取方法对应的缓存数据,若该缓存数据被获取,则判断该缓存数据是否为空,并进行对应操作获取返回数据,解决了Spring Cache技术不能根据缓存过期自动异步加载数据技术问题,根据缓存过期自动异步加载数据,支持缓存数据null的处理,减少系统压力,提高数据处理效率。
上面图6和图7从模块化功能实体的角度对本发明实施例中的分布式缓存处理装置进行详细描述,下面从硬件处理的角度对本发明实施例中分布式缓存处理设备进行详细描述。
图8是本发明实施例提供的一种分布式缓存处理设备的结构示意图,该分布式缓存处理设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)810(例如,一个或一个以上处理器)和存储器820,一个或一个以上存储应用程序833或数据832的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器820和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对分布式缓存处理设备800中的一系列指令操作。更进一步地,处理器810可以设置为与存储介质830通信,在分布式缓存处理设备800上执行存储介质830中的一系列指令操作。
分布式缓存处理设备800还可以包括一个或一个以上电源840,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口860,和/或,一个或一个以上操作系统831,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图8示出的分布式缓存处理设备结构并不构成对基于分布式缓存处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述分布式缓存处理方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种分布式缓存处理方法,其特征在于,所述分布式缓存处理方法包括:
监测是否存在缓存数据加载请求;
若存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
解析所述缓存注解,得到Spring EL表达式;
对所述Spring EL表达式进行hash映射,生成缓存key值;
基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象;
若所述本地缓存中存在与所述缓存key值对应的缓存对象,则基于所述缓存对象开启自动异步加载,并返回所述缓存对象对应的缓存数据。
2.根据权利要求1所述的分布式缓存处理方法,其特征在于,所述若存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解包括:
若存在缓存数据加载请求,则通过AOP拦截获取所述缓存加载请求;
基于所述缓存加载请求,确定所述缓存加载请求中对应的缓存方法;
基于所述缓存方法,提取所述缓存方法携带的缓存注解。
3.根据权利要求1所述的分布式缓存处理方法,其特征在于,所述解析所述缓存注解,得到Spring EL表达式包括:
解析所述缓存注解的属性信息,得到解析结果;
基于所述解析结果,获得所述缓存注解的属性key值;
提取所述属性key值中的hash函数表达式,并将所述hash函数表达式作为所述缓存key值对应的Spring EL表达式。
4.根据权利要求1所述的分布式缓存处理方法,其特征在于,所述对所述Spring EL表达式进行hash映射,生成缓存key值包括:
基于所述Spring EL表达式,确定所述缓存方法的参数值;
解析所述缓存注解的属性key值,确定所述属性key值对应的hash函数;
基于所述hash函数,对所述缓存方法的参数值进行hash计算,得到hash映射;
基于所述hash映射,对所述缓存方法的参数值进行hash赋值,以生成缓存key值。
5.根据权利要求1所述的分布式缓存处理方法,其特征在于,在所述基于所述缓存对象开启自动异步加载,并返回所述缓存对象对应的缓存数据之后,还包括:
若所述本地缓存中不存在与所述缓存key值对应的缓存对象,则返回源数据库获取与所述缓存key值对应的缓存对象的缓存数据;
利用预置池化包装器对所述缓存数据进行封装,并将封装后的所述缓存数据存储至预置数据库。
6.根据权利要求1所述的分布式缓存处理方法,其特征在于,所述若所述本地缓存中存在与所述缓存key值对应的缓存对象,则基于所述缓存对象开启自动异步加载,并返回所述缓存对象对应的缓存数据包括:
若本地缓存中存在与所述缓存key值对应的缓存对象且所述缓存对象对应的缓存数据非空,则解析所述缓存注解的加载属性,得到所述加载属性的值;
基于所述加载属性的值,判断所述缓存对象是否需要自动异步加载;
若是,则返回所述缓存对象对应的缓存数据;
若否,则判断所述缓存对象是否过期;
若所述缓存对象未过期,则返回所述缓存数据;
若所述缓存对象已过期,则发起异步刷新重新获取缓存数据并返回所述缓存对象对应的缓存数据。
7.根据权利要求1-6中任一项所述的分布式缓存处理方法,其特征在于,在所述基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象之后,还包括:
接收数据获取请求,并统计所述数据获取请求的数量以及记录接收到所述各数据获取请求的时间T1;
若存在多个数据获取请求,则记录响应第一个数据获取请求返回数据的时间T2;
判断所述时间T2与所述时间T1之间的时间差值是否超过预置阈值;
若是,则确定除第一个数据获取请求之外的其他数据获取请求对应的数据获取位置,并从所述数据获取位置获取对应数据。
8.一种分布式缓存处理装置,其特征在于,所述分布式缓存处理装置包括:
监测模块,用于监测是否存在缓存数据加载请求;
提取模块,用于当存在缓存数据加载请求,则采用AOP拦截提取所述加载请求中缓存方法的缓存注解;
解析模块,用于解析所述缓存注解,得到Spring EL表达式;
生成模块,用于对所述Spring EL表达式进行hash映射,生成缓存key值;
判断模块,用于基于所述缓存key值,遍历本地缓存并判断所述本地缓存中是否存在与所述缓存key值对应的缓存对象;
异步加载模块,用于当所述本地缓存中存在与所述缓存key值对应的缓存对象,则基于所述缓存对象,开启自动异步加载并返回所述缓存对象对应的缓存数据。
9.一种分布式缓存处理设备,其特征在于,所述分布式缓存处理设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
所述至少一个处理器调用所述存储器中的所述指令,以使得所述分布式缓存处理设备执行如权利要求1-7中任一项所述的分布式缓存处理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的分布式缓存处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010880801.7A CN112019619A (zh) | 2020-08-27 | 2020-08-27 | 分布式缓存处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010880801.7A CN112019619A (zh) | 2020-08-27 | 2020-08-27 | 分布式缓存处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112019619A true CN112019619A (zh) | 2020-12-01 |
Family
ID=73503775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010880801.7A Pending CN112019619A (zh) | 2020-08-27 | 2020-08-27 | 分布式缓存处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112019619A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113296854A (zh) * | 2021-06-23 | 2021-08-24 | 平安壹钱包电子商务有限公司 | 一种数据加载方法、系统、电子设备及存储介质 |
CN114895975A (zh) * | 2022-04-27 | 2022-08-12 | 上海万物新生环保科技集团有限公司 | 一种服务端系统的预热方法及设备 |
CN115878666A (zh) * | 2022-10-31 | 2023-03-31 | 四川川大智胜系统集成有限公司 | 一种缓存依赖关系的管理方法、系统、电子设备及介质 |
-
2020
- 2020-08-27 CN CN202010880801.7A patent/CN112019619A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113296854A (zh) * | 2021-06-23 | 2021-08-24 | 平安壹钱包电子商务有限公司 | 一种数据加载方法、系统、电子设备及存储介质 |
CN114895975A (zh) * | 2022-04-27 | 2022-08-12 | 上海万物新生环保科技集团有限公司 | 一种服务端系统的预热方法及设备 |
CN114895975B (zh) * | 2022-04-27 | 2023-07-25 | 上海万物新生环保科技集团有限公司 | 一种服务端系统的预热方法及设备 |
CN115878666A (zh) * | 2022-10-31 | 2023-03-31 | 四川川大智胜系统集成有限公司 | 一种缓存依赖关系的管理方法、系统、电子设备及介质 |
CN115878666B (zh) * | 2022-10-31 | 2023-09-12 | 四川川大智胜系统集成有限公司 | 一种缓存依赖关系的管理方法、系统、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112019619A (zh) | 分布式缓存处理方法、装置、设备及存储介质 | |
US11765048B2 (en) | Declarative and reactive data layer for component-based user interfaces | |
CN105069149B (zh) | 一种面向结构化列式数据的分布式并行数据导入方法 | |
US20190102351A1 (en) | Generating configuration information for obtaining web resources | |
CN110597739A (zh) | 一种配置的管理方法、系统及设备 | |
US20180285470A1 (en) | A Mobile Web Cache Optimization Method Based on HTML5 Application Caching | |
US20130124667A1 (en) | System and method for managing dedicated caches | |
CN113407421B (zh) | 微服务网关的动态日志记录管理方法及系统 | |
WO2018036549A1 (zh) | 分布式数据库查询方法、装置及管理系统 | |
EP3937022B1 (en) | Method and apparatus of monitoring interface performance of distributed application, device and storage medium | |
CN106790601A (zh) | 服务地址的读取装置、系统和方法 | |
CN111817984A (zh) | 消息发送方法、装置、设备及存储介质 | |
CN112860507B (zh) | 分布式链路跟踪系统采样率的控制方法和装置 | |
CN113438302A (zh) | 动态资源多级缓存方法、系统、计算机设备及存储介质 | |
CN109710604A (zh) | 数据处理方法、装置、系统、计算机可读存储介质 | |
US20140325160A1 (en) | Caching circuit with predetermined hash table arrangement | |
US10599740B1 (en) | Program code streaming | |
CN108846141B (zh) | 一种离线缓存加载方法及装置 | |
CN113254399A (zh) | 日志查询方法、装置、电子设备及介质 | |
CN111857737A (zh) | 基于SysML模型语义web系统的动静态资源分离方法 | |
US11847511B1 (en) | Standardized interactions across different blockchains | |
KR20160050735A (ko) | 대용량 공간 데이터 환경에서 공간분석을 위한 공간질의 장치 및 그를 위한 컴퓨터로 읽을 수 있는 기록 매체 | |
CN112988787B (zh) | 数据库数据处理方法、装置、计算机设备和存储介质 | |
CN113360455B (zh) | 一种超融合系统的数据处理方法、装置、设备及介质 | |
CN116842299B (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 |