System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种混合使用缓存存储组件的应用方法技术_技高网

一种混合使用缓存存储组件的应用方法技术

技术编号:40938862 阅读:3 留言:0更新日期:2024-04-18 14:57
本发明专利技术提供了一种混合使用缓存存储组件的应用方法及系统,该方法包括定义JVM本地缓存和分布式缓存两种类型,通过声明方式定义不同的CacheManager的管理对象,对不同类型的数据进行隔离存储管理;标准化使用方式;提供数据加载接口和抽象类,提供拦截注解标记;整合两种缓存模型,包括本地热加载和接口拦截两种模式,并配置化使用。本发明专利技术提高了接口响应速度,支持变更少使用频繁的数据的预加载,以及高访问量接口的响应报文缓存。同时,强调了保持缓存数据与数据库的一致性,并提供灵活的缓存管理。

【技术实现步骤摘要】

本专利技术涉及it与软件开发领域,具体涉及一种混合使用缓存存储组件的应用方法


技术介绍

1、在java web应用中,对于一些访问量较大的功能,是需要提高接口的吞吐量的。除了分布式化,增加应用实例个数外,缓存也是常用的一种方法。而缓存可分为jvm本地缓存、分布式缓存两类,对应地有不同的缓存存储组件(或者中间件),例如guava、caffeine、redis、memcache等。spring框架已经将存储管理了进行抽象,cachemanager进行缓存管理,并通过cache接口来统一缓存的访问,使得应用层对使用哪个缓存组件无感。而应用层是否可以同时使用多种缓存组件,比如预加载数据缓存到caffeine,接口数据缓存到redis;另外还支持方便地进行缓存方式的切换,比如一开始是redis的(分布式缓存),可快速切换成缓存到caffeine(jvm缓存)。


技术实现思路

1、为了满足在同一应用服务上,同时要使用jvm缓存和分布式缓存中间件的需要,本专利技术提出了一种基于spring的cache管理上混合使用缓存存储组件的应用方法及系统,以满足在同一应用服务上同时使用jvm缓存和分布式缓存中间件的需求。旨在提高接口响应速度,支持变更少使用频繁的数据的预加载,以及高访问量接口的响应报文缓存。同时,强调了保持缓存数据与数据库的一致性,并提供灵活的缓存管理。

2、基于上述目的,第一方面,本专利技术提供了一种混合使用缓存存储组件的应用方法,包括以下步骤:

3、定义jvm本地缓存和分布式缓存两种类型,通过声明方式定义不同的cachemanager的管理对象,对不同类型的数据进行隔离存储管理;标准化使用方式;

4、提供数据加载接口和抽象类,提供拦截注解标记;

5、所述混合使用缓存存储组件的应用方法还包括:提供两种缓存模型,包括本地热加载和接口拦截两种模式,并配置化使用。

6、作为本专利技术的进一步方案,选择caffeine、guava来管理jvm本地缓存,使用redis、memcache等来管理分布式缓存。

7、作为本专利技术的进一步方案,缓存块通过枚举信息列表进行定义,通过枚举信息生成对应的cache和cachemanager对象。

8、作为本专利技术的进一步方案,提供数据加载接口时,通过加载器向数据库加载内容到缓存,并有定时任务进行向数据库查最新数据进行更新;加载器依赖cachemanager对象进行信息保存,用于确定数据加载到jvm本地缓存或分布式缓存。

9、作为本专利技术的进一步方案,提供数据加载接口时,还基于自定义注解进行拦截处理,数据缓存分类隔离。

10、作为本专利技术的进一步方案,自定义注解通过配置化方式定义ttl过期时间,自定义注解按照内容分类进行清除。

11、作为本专利技术的进一步方案,本地热加载模式进行预加载内容并缓存时,包括以下步骤:

12、cachemanager缓存定义带有存储位置、缓存策略的信息,每个加载器使用一种缓存定义,实现加载逻辑;

13、通过任务管理器读取加载器列表,并为每个加载器生成服务类;

14、初始化预加载,并通过cachemanager确定存储位置;

15、加入定时任务,调用服务类更新内容。

16、作为本专利技术的进一步方案,接口拦截模式进行缓存处理,包括以下步骤:

17、用户访问接口,拦截器通过处理带有自定义注解的方法处理;

18、通过cachemanage判断是否有缓存,若有缓存则返回;用户批量清理,通过记录器查找domain下的所有key;

19、若没缓存,则缓存新结果;并发送事件给记录器,将key与domain关系记录下来。

20、第二方面,本专利技术还提供了一种混合使用缓存存储组件的应用系统,包括应用层、容器框架层和中间件;

21、所述应用层包括缓存定义模块、定时更新任务模块、加载器和任务管理器,还包括自定义注解模块、拦截处理器和key记录器;

22、所述容器框架层包括cachemanager以及若干cache缓存块;

23、所述中间件包括caffeine、guava以及redis。

24、作为本专利技术的进一步方案,所述加载器还包括加载列表管理器,用于在springioc容器中找到所有cacheloader的实例,实现标准接口或抽象类,转成加载service服务类,对进行初始化,在应用启动后调用cacheloder实例的load方法来进行数据加载。

25、作为本专利技术的进一步方案,所述加载器还设有一个定时调度的线程池,在初始化后将cacheloader服务加入到定义任务中,定义调用load方法,load方法带有上次加载的时间点,用于区分是第一次加载还是刷新请求。

26、本专利技术的又一方面,还提供了一种计算机设备,包括存储器和处理器,该存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述任一项根据本专利技术的混合使用缓存存储组件的应用方法。

27、本专利技术的再一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被执行时实现上述任一项根据本专利技术的混合使用缓存存储组件的应用方法。

28、与现有技术相比较而言,本专利技术提出的一种混合使用缓存存储组件的应用方法及系统,具有以下有益效果:

29、1.通过整合提供更完整的缓存方案,同时支持本地热加载和接口拦截两种模式。同时基于spring不同的模式可以使用不同的中间件。

30、2.标准化使用方式。提供预加载的api来实现数据预加载进缓存和定时更新;用配置化定义缓存的策略(比如大小、时效、使用的组件等)。

31、3.更细粒度的过期定义。比如spring一般同名称的cache为一类并设置ttl过期时间。本方法通过自定义注解实现接口层定义ttl过期时间。

32、4.完整的治理方法。像spring这些缓存,主动失效一般是单条的。本方案实现分类批量清除,且结合actuator实现endpoint治理,可强制清理缓存。

33、综上所述,本专利技术在spring缓存管理的基础上扩展,原本的spring的功能还是能够继续使用,提供两种缓存模式,并提供了更多的缓存清理和更新方式。

34、本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

本文档来自技高网...

【技术保护点】

1.一种混合使用缓存存储组件的应用方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的混合使用缓存存储组件的应用方法,其特征在于,选择Caffeine、Guava来管理JVM本地缓存,使用Redis、memcache来管理分布式缓存。

3.根据权利要求2所述的混合使用缓存存储组件的应用方法,其特征在于,缓存块通过枚举信息列表进行定义,通过枚举信息生成对应的Cache和CacheManager对象。

4.根据权利要求3所述的混合使用缓存存储组件的应用方法,其特征在于,提供数据加载接口时,通过加载器向数据库加载内容到缓存,并有定时任务进行向数据库查最新数据进行更新;加载器依赖CacheManager对象进行信息保存,用于确定数据加载到JVM本地缓存或分布式缓存。

5.根据权利要求4所述的混合使用缓存存储组件的应用方法,其特征在于,提供数据加载接口时,还基于自定义注解进行拦截处理,数据缓存分类隔离。

6.根据权利要求5所述的混合使用缓存存储组件的应用方法,其特征在于,自定义注解通过配置化方式定义TTL过期时间,自定义注解按照内容分类进行清除。

7.根据权利要求6所述的混合使用缓存存储组件的应用方法,其特征在于,本地热加载模式进行预加载内容并缓存时,包括以下步骤:

8.根据权利要求6所述的混合使用缓存存储组件的应用方法,其特征在于,接口拦截模式进行缓存处理,包括以下步骤:

9.一种混合使用缓存存储组件的应用系统,其特征在于,该混合使用缓存存储组件的应用系统用于执行权利要求1-8任一项所述的混合使用缓存存储组件的应用方法,该系统包括应用层、容器框架层和中间件;

10.根据权利要求9所述的混合使用缓存存储组件的应用系统,其特征在于,所述加载器还包括加载列表管理器,用于在spring ioc容器中找到所有cacheLoader的实例,实现标准接口或抽象类,转成加载Service服务类,对进行初始化,在应用启动后调用CacheLoder实例的load方法来进行数据加载。

...

【技术特征摘要】

1.一种混合使用缓存存储组件的应用方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的混合使用缓存存储组件的应用方法,其特征在于,选择caffeine、guava来管理jvm本地缓存,使用redis、memcache来管理分布式缓存。

3.根据权利要求2所述的混合使用缓存存储组件的应用方法,其特征在于,缓存块通过枚举信息列表进行定义,通过枚举信息生成对应的cache和cachemanager对象。

4.根据权利要求3所述的混合使用缓存存储组件的应用方法,其特征在于,提供数据加载接口时,通过加载器向数据库加载内容到缓存,并有定时任务进行向数据库查最新数据进行更新;加载器依赖cachemanager对象进行信息保存,用于确定数据加载到jvm本地缓存或分布式缓存。

5.根据权利要求4所述的混合使用缓存存储组件的应用方法,其特征在于,提供数据加载接口时,还基于自定义注解进行拦截处理,数据缓存分类隔离。

6.根据权利要求5所述的混...

【专利技术属性】
技术研发人员:魏日朗李君钟毅詹栋才张杰
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1