多入口数据缓存方法及存储介质技术

技术编号:24010583 阅读:61 留言:0更新日期:2020-05-02 01:36
一种多入口数据缓存方法及存储介质,其中方法包括如下步骤,拦截原缓存调用请求,根据该缓存调用请求生成密钥KEY,所述密钥KEY的生成规则为:入口平台代码+命名空间+类名+命名空间版本号+识别码;使用上述密钥在缓存服务器中进行数据调用,若获取的到数据,则将数据返回,若未命中数据,则直接使用原缓存调用请求获取数据库中数据,并将该数据及对应的密钥KEY存储在缓存服务器中。本发明专利技术通过对数据调用的请求进行拦截,然后在缓存服务器中创建识别KEY及对应数据的方式,使得多入口分次调用相同数据的请求不用再多次访问数据库,减少了数据库的代码侵入,并进一步地提高了入口数据调用的效率。

Multi entry data caching method and storage medium

【技术实现步骤摘要】
多入口数据缓存方法及存储介质
本专利技术涉及数据存储领域,尤其涉及一种加快多平台互通的数据缓存方法。
技术介绍
缓存技术是加快数据读取的一种常用技术,常常被用于各种各样的软件系统中,其作用是帮助系统更快地运行。目前存在诸多缓存系统包括mencached、redis、ehcache等,对各种各样缓存系统的访问和使用需要根据不同的要求来实现,没有一个统一的方式,难以实现对缓存系统进行快捷访问和管理。目前广泛运用的缓存处理方法包括直接调用各种各样缓存系统的SDK进行直接缓存操作,还有使用AOP进行缓存处理的方法,其中基于AOP缓存处理的方法能够减少代码的侵入,但是仍然无法解决各个缓存系统之间快速切换的问题。现有技术中还存在一些缓存服务实现方法,该方法将缓存划分为私有缓存和公共缓存,并对缓存key设置一个前缀,同时,框架提供一套规范来管理缓存key,以防止缓存key发生冲突,该方法主要应用于解决公共缓存和私有缓存的权限访问问题,对于缓存系统的快速切换以及代码侵入性都未能够很好解决,其中原始数据直接存入缓存系统会有数据异常问题。
技术实现思路
为此,需要提供一种能够兼容多平台入口并缓存实现方法,用以实现减小代码侵入及统一的缓存快速切换和管理中介;为实现上述目的,专利技术人提供了一种多入口数据缓存方法,包括如下步骤,拦截原缓存调用请求,根据该缓存调用请求生成密钥KEY,所述密钥KEY的生成规则为:入口平台代码+命名空间+类名+命名空间版本号+识别码;使用上述密钥在缓存服务器中进行数据调用,若获取得到数据,则将数据返回,若未命中数据,则直接使用原缓存调用请求获取数据库中数据,并将该数据及对应的密钥KEY存储在缓存服务器中。具体地,还包括步骤,将该数据及对应的密钥KEY进行序列化后存储在缓存服务器中。具体地,还包括步骤,判断密钥KEY中的版本号是否存在于缓存服务器,当判定为不存在于缓存服务器中时,进行步骤,直接使用原缓存调用请求获取数据库中数据。具体地,还包括步骤,拦截对数据库中数据的操作,将变动数据的在缓存服务器中对应的命名空间版本号更新。一种多入口数据缓存存储介质,存储有计算机程序,所述计算机程序在被运行时执行包括如下步骤,拦截原缓存调用请求,根据该缓存调用请求生成密钥KEY,所述密钥KEY的生成规则为:入口平台代码+命名空间+类名+命名空间版本号+识别码;使用上述密钥在缓存服务器中进行数据调用,若获取的到数据,则将数据返回,若未命中数据,则直接使用原缓存调用请求获取数据库中数据,并将该数据及对应的密钥KEY存储在缓存服务器中。具体地,所述计算机程序在被运行时还执行包括步骤,将该数据及对应的密钥KEY进行序列化后存储在缓存服务器中。具体地,所述计算机程序在被运行时还执行包括步骤,判断密钥KEY中的版本号是否存在于缓存服务器,当判定为不存在于缓存服务器中时,进行步骤,直接使用原缓存调用请求获取数据库中数据。具体地,所述计算机程序在被运行时还执行包括步骤,拦截对数据库中数据的操作,将变动数据的在缓存服务器中对应的命名空间版本号更新。区别于现有技术,本专利技术通过对数据调用的请求进行拦截,然后在缓存服务器中创建识别KEY及对应数据的方式,使得多入口分次调用相同数据的请求不用再多次访问数据库,减少了数据库的访问压力,并进一步地提高了入口数据调用的效率,同时减少了对业务系统的代码侵入。附图说明图1为本专利技术一实施方式涉及的流程图;具体实施方式为详细说明技术方案的
技术实现思路
、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。请参阅图1,为本专利技术方案的流程图,具体工作原理如下:一种多入口数据缓存方法,包括如下步骤,拦截原缓存调用请求,根据该缓存调用请求生成密钥KEY,所述密钥KEY的生成规则为:入口平台代码+命名空间+类名+命名空间版本号+识别码;使用上述密钥在缓存服务器中进行数据调用,若获取得到数据,则将数据返回,若未命中数据,则直接使用原缓存调用请求获取数据库中数据,并将该数据及对应的密钥KEY存储在缓存服务器中。还包括步骤,将该数据及对应的密钥KEY进行序列化后存储在缓存服务器中。具体地,还包括步骤,判断密钥KEY中的版本号是否存在于缓存服务器,当判定为不存在于缓存服务器中时,进行步骤,直接使用原缓存调用请求获取数据库中数据。具体地,请参见图1,S100用户发起请求到控制层、控制层接受请求并调用服务层进行处理,AOP对服务层上的请求和或注解进行拦截,根据该请求和或注解生成(nameSpace命名空间)到缓存服务器获取版本号,获取到版本号后,系统判断版本号是否正确。S102如果为正确版本号,即在缓存服务器中存放有相关的命名空间的版本号,则系统按预设规则生成密钥KEY,并使用上述密钥在缓存服务器中进行数据调用,判断缓存是否命中,即是否可以根据上述密钥在缓存服务器中读取相应数据。如果缓存命中,即根据上述密钥在缓存服务器中读取相应数据,则直接就从缓存服务器获取数据并返回给前端,如果未命中则为缓存穿透,即调用原被拦截的上层请求和或注解到数据库中获取数据,同时把该数据以及按上述请求、注解生成的KEY存入缓存中。S104如果为非正常版本号,表明命名空间中没有数据即缓存被穿透,调用原被拦截的请求和或注解直接访问数据库,并直接从数据库中获取数据,并按既定的规则将请求对应的KEY一并存入缓存服务器中。S106对存入缓存数据库中的数据进行序列化,对于直接从缓存系统中获取到的数据,同样进行反序列化。这里的序列化和反序列化,即通用字符与编程语言对向之间的转换。在某些实施例中,我们可以使用fastjosn对java对象进行转换,序列化为把java对象转换为文本类型的json串的变化,反序列化为把文本类型的json串重新恢复为java对象的变化。在实际应用中,用户可能通过多种平台入口调用数据,缓存服务器的数据存储方式也各不相同,造成直接使用编程语言如java对象存入缓存服务器的数据在切换缓存服务器的时候会出现数据异常,即无法在多个缓存服务器中均被识别。这一实施例中,则通过序列化与反序列化能够提高本专利技术方法的普适性,解决多缓存服务器的兼容问题。在具体的实施例中,还进行步骤,缓存删除:对于后台有变动的操作,包括调用外部接口或直接从数据库获取数据的操作,如果操作该方法被AOP拦截,则按照平台、命名空间对计数器进行增加,其中计数器增加变相的就是对存储在缓存中的KEY的命名空间值进行变更操作,使得在按照原来的KEY获取命名空间中数据缓存的KEY的集合失活,从而造成按命名生成的KEY无法从缓存系统中获取到数据形成缓存穿透,原来的缓存按照时间或LRU(缓存系统内部自带的缓存淘汰算法,主要依据,最久未被使用的进行淘汰缓存)被清除,最终达到删除缓存中失活的数据的目的。在进一步的实施例中,我们可以以Spring语言为例,如何应用上本文档来自技高网
...

【技术保护点】
1.一种多入口数据缓存方法,其特征在于,包括如下步骤,拦截原缓存调用请求,根据该缓存调用请求生成密钥KEY,/n所述密钥KEY的生成规则为:入口平台代码+命名空间+类名+命名空间版本号+识别码;/n使用上述密钥在缓存服务器中进行数据调用,若获取得到数据,则将数据返回,若未命中数据,则直接使用原缓存调用请求获取数据库中数据,并将该数据及对应的密钥KEY存储在缓存服务器中。/n

【技术特征摘要】
1.一种多入口数据缓存方法,其特征在于,包括如下步骤,拦截原缓存调用请求,根据该缓存调用请求生成密钥KEY,
所述密钥KEY的生成规则为:入口平台代码+命名空间+类名+命名空间版本号+识别码;
使用上述密钥在缓存服务器中进行数据调用,若获取得到数据,则将数据返回,若未命中数据,则直接使用原缓存调用请求获取数据库中数据,并将该数据及对应的密钥KEY存储在缓存服务器中。


2.根据权利要求1所述的多入口数据缓存方法,其特征在于,还包括步骤,将该数据及对应的密钥KEY进行序列化后存储在缓存服务器中。


3.根据权利要求1所述的多入口数据缓存方法,其特征在于,还包括步骤,判断密钥KEY中的版本号是否存在于缓存服务器,当判定为不存在于缓存服务器中时,进行步骤,直接使用原缓存调用请求获取数据库中数据。


4.根据权利要求1所述的多入口数据缓存方法,其特征在于,还包括步骤,拦截对数据库中数据的操作,将变动数据的在缓存服务器中对应的命名空间版本号更新。


5.一种多入口数据缓存存储介质,其特征在于,存储有计算机程序...

【专利技术属性】
技术研发人员:郑耀松苏江文庄莉梁懿王秋琳
申请(专利权)人:福建亿榕信息技术有限公司国网信息通信产业集团有限公司国网信通亿力科技有限责任公司
类型:发明
国别省市:福建;35

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

1