数据缓存方法、装置、计算机设备和可读介质制造方法及图纸

技术编号:35329671 阅读:14 留言:0更新日期:2022-10-26 11:46
本发明专利技术提供一种数据缓存方法,属于数据库技术领域,其可解决现有的手动维护缓存带来的可靠性差问题。本发明专利技术的数据缓存方法包括:接收针对数据库的数据操作指令,获取数据操作指令所调用方法的全限定名;根据全限定名在本地缓存中查询RedisKey变量名和RedisKey变量的前缀;响应于在本地缓存中查询到全限定名对应的RedisKey变量名和RedisKey变量的前缀,确定RedisKey变量名对应的变量值,并根据前缀和变量值得到RedisKey变量;在分布式缓存中对RedisKey变量对应的数据执行与数据操作指令相对应的操作。本发明专利技术可用于SSM框架集,能够自动对分布式缓存中的数据进行维护,提高系统可靠性和数据处理效率,降低对程序开发人员的依赖。本发明专利技术还提供一种数据缓存装置、计算机设备和可读介质。备和可读介质。备和可读介质。

【技术实现步骤摘要】
数据缓存方法、装置、计算机设备和可读介质


[0001]本专利技术属于数据库
,具体涉及一种数据缓存方法、装置、计算机设备和可读介质。

技术介绍

[0002]随着Springboot框架,Mybatis框架,Redis(Remote Dictionary Server,远程字典)等技术的成熟,互联网项目越来越多的从spring+struct2+Hibernate架构,向Spring+SpringMVC+Mybatis的架构迁移,或者直接使用SSM (Spring+SpringMVC+MyBatis)框架集作为项目架构。另一方面,在大数据、高并发、分布式的环境下,原有的本地缓存技术也逐渐被分布式缓存所取代。分布式缓存解决了原来各个服务器之间缓存不一致的弊端,提高了缓存的整体利用效率,节省了缓存的总空间量,这就对程序开发人员提出了更高的要求。
[0003]目前,在进行数据库查询操作时,程序开发人员需手动将查询到的数据缓存在分布式缓存中,以便下次查询时直接从分布式缓存中获取数据。在数据库变更时,程序开发人员需根据存储时的key在分布式缓存中手动删除相应的数据。这样的缓存维护,在包括上百张表的项目中,经常会出现数据在分布式缓存中已添加,但忘记删除的情况。或者,由于程序开发人员技术参差不齐产生代码漏洞,导致分布式缓存查询失败时,直接返回异常数据的情况。这种手动维护缓存的方式,在项目交接给下一个维护的团队,或者程序开发人员技术较为薄弱时,弊端尤为明显。

技术实现思路

[0004]本专利技术旨在至少解决现有技术中存在的技术问题之一,提供一种可靠性高、效率高、灵活性强的数据缓存方法、装置、计算机设备和可读介质。
[0005]第一方面,本专利技术实施例提供一种数据缓存方法,所述方法包括:
[0006]接收针对数据库的数据操作指令,获取所述数据操作指令所调用方法的全限定名;
[0007]根据所述全限定名在本地缓存中查询RedisKey变量名和RedisKey变量的前缀;
[0008]响应于在本地缓存中查询到所述全限定名对应的RedisKey变量名和 RedisKey变量的前缀,确定所述RedisKey变量名对应的变量值,并根据所述前缀和所述变量值得到RedisKey变量;
[0009]在分布式缓存中对所述RedisKey变量对应的数据执行与所述数据操作指令相对应的操作。
[0010]第二方面,本专利技术实施例还提供一种数据缓存装置,包括接收模块、获取模块、第一处理模块和第二处理模块,所述接收模块用于,接收针对数据库的数据操作指令,获取所述数据操作指令所调用方法的全限定名;
[0011]所述获取模块用于,根据所述全限定名在本地缓存中查询RedisKey变量名和RedisKey变量的前缀;
[0012]所述第一处理模块用于,响应于在本地缓存中查询到所述全限定名对应的 RedisKey变量名和RedisKey变量的前缀,确定所述RedisKey变量名对应的变量值,并根据所述前缀和所述变量值得到RedisKey变量;
[0013]所述第二处理模块用于,在分布式缓存中对所述RedisKey变量对应的数据执行与所述数据操作指令相对应的操作。
[0014]第三方面,本专利技术实施例还提供一种计算机设备,包括:
[0015]一个或多个处理器;
[0016]存储装置,其上存储有一个或多个程序;
[0017]当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如前所述的数据缓存方法。
[0018]第四方面,本专利技术实施例还提供一种计算机可读介质,其上存储有计算机程序,其中,所述程序被执行时实现如前所述的数据缓存方法。
附图说明
[0019]图1为本专利技术实施例的数据缓存方法流程示意图一;
[0020]图2为本专利技术实施例的数据缓存方法流程示意图二;
[0021]图3为本专利技术实施例的基于数据查询指令在分布式缓存中对数据进行操作的流程示意图;
[0022]图4为本专利技术实施例的基于数据修改指令在分布式缓存中对数据进行操作的流程示意图;
[0023]图5为本专利技术实施例的数据修改指令下在分布式缓存中实现双删机制的流程示意图;
[0024]图6为本专利技术实施例的数据修改指令下确定RedisKey变量的前缀的流程示意图;
[0025]图7为本专利技术实施例的数据缓存装置的结构示意图一;
[0026]图8为本专利技术实施例的数据缓存装置的结构示意图二。
具体实施方式
[0027]为使本领域技术人员更好地理解本专利技术的技术方案,下面结合附图和具体实施方式对本专利技术作进一步详细描述。
[0028]除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
[0029]本专利技术实施例提供一种数据缓存方法,所述方法通过插件方式实现,为实现本发
明实施例,做以下定义:
[0030]1、在Springboot项目的Pom.xml文件中引入Maven(项目构建管理)依赖,具体代码如下:
[0031]<dependency>
[0032]<groupId>com.boe.middleware</groupId>
[0033]<artifactId>MybatisRedisPlugin</artifactId>
[0034]<version>0.0.1

SNAPSHOT</version>
[0035]</dependency>
[0036]2、Springboot项目中所有的SelectByPrimaryKey调用方法或具有@ RedisAdd注解的调用方法会自动添加到分布式缓存(Redis缓存)。
[0037]RedisKey变量由2部分组成,RedisKey前缀和RedisKey变量值(该变量值默认为数据库ID),中间用“:”分隔,例如,User:1。
[0038]3、Spring本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据缓存方法,其特征在于,所述方法包括:接收针对数据库的数据操作指令,获取所述数据操作指令所调用方法的全限定名;根据所述全限定名在本地缓存中查询RedisKey变量名和RedisKey变量的前缀;响应于在本地缓存中查询到所述全限定名对应的RedisKey变量名和RedisKey变量的前缀,确定所述RedisKey变量名对应的变量值,并根据所述前缀和所述变量值得到RedisKey变量;在分布式缓存中对所述RedisKey变量对应的数据执行与所述数据操作指令相对应的操作。2.如权利要求1所述的方法,其特征在于,在获取所述数据操作指令所调用方法的全限定名之后,根据所述全限定名在本地缓存中查询RedisKey变量名和RedisKey变量的前缀之前,还包括:判断所述全限定名是否在忽略列表中;所述根据所述全限定名在本地缓存中查询RedisKey变量名和RedisKey变量的前缀,包括:响应于所述全限定名不在所述忽略列表中,根据所述全限定名在本地缓存中查询RedisKey变量名和RedisKey变量的前缀。3.如权利要求2所述的方法,其特征在于,在判断所述全限定名是否在忽略列表中之后,所述方法还包括:响应于所述全限定名在所述忽略列表中,在所述数据库中执行所述数据操作指令对应的操作。4.如权利要求2所述的方法,其特征在于,在根据所述全限定名在本地缓存中查询RedisKey变量名和RedisKey变量的前缀之后,所述方法还包括:响应于在本地缓存中未查询到所述全限定名对应的RedisKey变量名和RedisKey变量的前缀,获取所述全限定名对应的RedisKey变量名和RedisKey变量的前缀;响应于确定出需要在所述分布式缓存中对所述RedisKey变量对应的数据进行操作,将所述RedisKey变量名和所述RedisKey变量的前缀存储在本地缓存中;确定所述RedisKey变量名对应的变量值,并根据所述前缀和所述变量值得到RedisKey变量;在分布式缓存中对所述RedisKey变量对应的数据执行与所述数据操作指令相对应的操作。5.如权利要求4所述的方法,其特征在于,在响应于在本地缓存中未查询到所述全限定名对应的RedisKey变量名和RedisKey变量的前缀,获取所述全限定名对应的RedisKey变量名和RedisKey变量的前缀之后,所述方法还包括:响应于确定出不需要在所述分布式缓存中对所述RedisKey变量对应的数据进行操作,将所述全限定名添加到所述忽略列表中。6.如权利要求1或4所述的方法,其特征在于,所述数据操作指令为数据查询指令,所述在分布式缓存中对所述RedisKey变量对应的数据执行与所述数据操作指令相对应的操作,包括:在分布式缓存中查询所述RedisKey变量对应的数据;响应于在所述分布式缓存中未查询到所述RedisKey变量对应的数据,从所述数据库中
查询相应的数据,并在所述分布式缓存中存储所述数据。7.如权利要求4所述的方法,其特征在于,所述数据操作指令为数据查询指令,所述获取所述全限定名对应的RedisKey变量名和RedisKey变量的前缀,包括:根据第一注解获取RedisKey变量名和RedisKey变量的前缀,具有所述第一注解的调用方法能够在所述分布式缓存中存储返回的数据;其中,若所述RedisKey变量名为空,则将预设字符作为RedisKey变量名;若所述RedisKey变量的前缀为空,则确定所述全限定名对应的调用方法,并确定所述调用方法的返回值对象的类名,将所述类名作为所述RedisKey变量的前缀。8.如权利要求1或4所述的方法...

【专利技术属性】
技术研发人员:曹旭皓
申请(专利权)人:京东方科技集团股份有限公司
类型:发明
国别省市:

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

1