一种使用自动加载机制实现数据常驻内存方法技术

技术编号:26790722 阅读:9 留言:0更新日期:2020-12-22 17:05
本发明专利技术公开了一种使用自动加载机制实现数据常驻内存方法,包括步骤,获取到拦截方法的Cache注解,并生成缓存key;通过缓存key,去缓存中获取数据;通过自动加载处理器AutoLoadHandler,当缓存即将过期时,获取数据,并将数据放到缓存中。为了防止自动加载队列过大,设置了容量限制;同时会将超过一定时间没有用户请求的也会从自动加载队列中移除,把服务器资源释放出来,给真正需要的请求。避免在请求高峰时,因为缓存失效,而造成数据库压力无法承受的问题。

【技术实现步骤摘要】
一种使用自动加载机制实现数据常驻内存方法
本专利技术涉及计算机数据处理领域,具体涉及一种使用自动加载机制实现数据常驻内存方法及分离方法。
技术介绍
缓存可以说是无处不在,比如PC电脑中的内存、CPU中的二级缓存、数据库IO占用、HTTP协议中的缓存控制、CDN加速技术都是使用了缓存的思想来解决性能问题。缓存又分进程内缓存和分布式缓存两种,现在使用的缓存技术多种多样,比如Redis、Memcache、EhCache等,甚至还有使用ConcurrentHashMap或HashTable来实现缓存。但在缓存的使用上,每个都有自己的实现方式,大部分是直接与业务代码绑定,随着业务的变化,要更换缓存方案。人们在使用缓存的大部分情况下,都是把缓存操作和业务逻辑的代码交织在一起,这样会引起如下几个问题:1.缓存操作非常繁琐,产生非常多的重复代码。2.缓存操作与业务逻辑耦合度非常高,不利于后期的维护。3.当业务数据为null时,无法确定是否已经缓存,会造成缓存无法命中。4.开发阶段,为了排查问题,经常需要来回开关缓存功能,使用上面的代码是无法做到很方便地开关缓存功能。5.当业务越来越复杂,使用缓存的地方越来越多时,很难定位哪些数据要进行主动删除。6.如果不想用Redis,换用别的缓存技术的话,就特别的麻烦。因此基于Redis缓存技术的以上几点不足,我们有必要针对现有技术的不足而提供一种使用自动加载机制实现数据常驻内存方法。
技术实现思路
为了克服现有技术中的不足,本专利技术提出一种使用自动加载机制实现数据常驻内存方法,其能够有效减轻数据库的压力。为了实现上述目的,本专利技术提出一种使用自动加载机制实现数据常驻内存方法,包括如下步骤,S1、获取到拦截方法的Cache注解,并生成缓存key;S2、通过缓存key,去缓存中获取数据。优选的,如果缓存被访问的数据命中则进行步骤S3,S3包括,S301、如果需要自动加载,则请求相关参数,封装到AutoLoad中,并放到AutoLoadHandler中,把相关信息保存到自动加载队列中;S302、如果不需要自动加载,则判断缓存是否即将过期,当缓存即将过期,则发起异步刷新;S303、把数据返回给用户。优选的,如果缓存没有被访问的数据命中则进行步骤S4,S4包括,S401、选举出一个leader回到数据源中去加载数据,加载到数据后通知其它请求从内存中获取数据;S402、leader负责把数据写入缓存;如果需要自动加载,则把相关信息保存到自动加载队列中;S403、把数据返回给用户。本专利技术具有以下有益效果:通过自动加载处理器AutoLoadHandler,当缓存即将过期时,获取数据,并将数据放到缓存中。为了防止自动加载队列过大,设置了容量限制;同时会将超过一定时间没有用户请求的也会从自动加载队列中移除,把服务器资源释放出来,给真正需要的请求。避免在请求高峰时,因为缓存失效,而造成数据库压力无法承受的问题。附图说明下面结合附图对本专利技术作进一步描写和阐述。图1为实现一种使用自动加载机制实现数据常驻内存方法工作原理图。具体实施方式下面将结合附图、通过对本专利技术的优选实施方式的描述,更加清楚、完整地阐述本专利技术的技术方案。实施例。如图1所示,本专利技术提出的一种使用自动加载机制实现数据常驻内存方法,包括,包括如下步骤,S1、获取到拦截方法的Cache注解,并生成缓存key。本实施例中主要采用AOP方法拦截Cache注解,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。S2、通过缓存key,去缓存中获取数据。作为本专利技术的一种技术优化方案,如果缓存被访问的数据命中则进行步骤S3,S3包括,S301、如果需要自动加载,则请求相关参数,封装到AutoLoad中,并放到AutoLoadHandler中,把相关信息保存到自动加载队列中。本实施例中,AutoLoadHandler(自动加载处理器)主要做的事情:当缓存即将过期时,去执行DAO的方法,获取数据,并将数据放到缓存中。为了防止自动加载队列过大,设置了容量限制;同时会将超过一定时间没有用户请求的也会从自动加载队列中移除,把服务器资源释放出来,给真正需要的请求。使用自加载的目的:避免在请求高峰时,因为缓存失效,而造成数据库压力无法承受;把一些耗时业务得以实现;把一些使用非常频繁的数据,使用自动加载,因为这样的数据缓存失效时,最容易造成服务器的压力过大。S302、如果不需要自动加载,则判断缓存是否即将过期,当缓存即将过期,则发起异步刷新。S303、把数据返回给用户。作为本专利技术的一种技术优化方案,如果缓存没有被访问的数据命中则进行步骤S4,S4包括,S401、选举出一个leader回到数据源中去加载数据,加载到数据后通知其它请求从内存中获取数据。S402、leader负责把数据写入缓存;如果需要自动加载,则把相关信息保存到自动加载队列中。S403、把数据返回给用户。AutoLoadCache是使用SpringAOP、Annotation以及SpringEL表达式来进行管理缓存的解决方案,实现缓存与业务逻辑的解耦,并增加异步刷新及“拿来主义机制”,以适应高并发环境下的使用。为了更好管理缓存增加了Magic模式,同时基于AOP实现自动加载机制来达到数据“常驻内存”的目的。上述具体实施方式仅仅对本专利技术的优选实施方式进行描述,而并非对本专利技术的保护范围进行限定。在不脱离本专利技术设计构思和精神范畴的前提下,本领域的普通技术人员根据本专利技术所提供的文字描述、附图对本专利技术的技术方案所作出的各种变形、替代和改进,均应属于本专利技术的保护范畴。本专利技术的保护范围由权利要求确定。本文档来自技高网...

【技术保护点】
1.一种使用自动加载机制实现数据常驻内存方法,其特征在于:包括如下步骤,/nS1、获取到拦截方法的Cache注解,并生成缓存key;/nS2、通过缓存key,去缓存中获取数据。/n

【技术特征摘要】
1.一种使用自动加载机制实现数据常驻内存方法,其特征在于:包括如下步骤,
S1、获取到拦截方法的Cache注解,并生成缓存key;
S2、通过缓存key,去缓存中获取数据。


2.根据权利要求1所述的一种使用自动加载机制实现数据常驻内存方法,其特征在于:如果缓存被访问的数据命中则进行步骤S3,S3包括,
S301、如果需要自动加载,则请求相关参数,封装到AutoLoad中,并放到AutoLoadHandler中,把相关信息保存到自动加载队列中;
S302、如果...

【专利技术属性】
技术研发人员:刘承承
申请(专利权)人:紫光云南京数字技术有限公司
类型:发明
国别省市:江苏;32

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

1