缓存方法技术

技术编号:30179488 阅读:19 留言:0更新日期:2021-09-25 15:41
本发明专利技术涉及数据缓存技术领域,提供一种缓存方法,包括以下步骤:定义一个通用的缓存操作接口类;定义多个缓存实现类,其中,每个所述缓存实现类实现所述缓存操作接口类中的缓存存取方法;实例化每个所述缓存实现类并对每个实例进行命名,得到相应的多个缓存提供者;将每个所述缓存提供者放入缓存提供者容器;在接收到缓存操作请求后,从所述缓存提供者容器中选择缓存提供者进行缓存操作。本发明专利技术能够大大提高缓存实现的方便性。提高缓存实现的方便性。提高缓存实现的方便性。

【技术实现步骤摘要】
缓存方法


[0001]本专利技术涉及数据缓存
,具体涉及一种缓存方法。

技术介绍

[0002]数字时代背景下,越来越多的线下业务搬到了线上,数字化转型成为当前各个企业的重点任务,为了降低用户访问系统响应时间,缓存技术成为一项重要的技术手段,为了更加快速响应用户请求,将热点数据、配置数据、元数据等进行高速缓存,以减少对低速设备的请求。当前主流开发流程中可以选择使用Redis、Memcache等分布式缓存、Ehcache类的本地缓存或者直接在代码中使用内存作为缓存,不同的缓存选择,对应的编码方式也各不相同,一般项目开发中会先确定一个使用的缓存类型,然后针对性的开发对应的工具类供业务代码调用。当需要实现多级缓存,则需要同时开发多个工具类,开发人员使用时需要了解各个缓存的优先级,然后通过不同的工具类进行操作和处理。
[0003]虽然每个类型的缓存对应地有个工具类供开发人员使用,但是使用不同的类型需要使用不同的工具类,因此就存在以下缺陷:(1)由于开发人员的业务代码使用了具体的工具类,这是高耦合的编码方式,当需要改变缓存类型时,则所有的相关代码都需要修改;(2)不同的缓存类型提供的开发SDK(Software Development Kit,软件开发工具包)中方法名、参数等各不相同,需要开发人员掌握各种类型缓存的使用方法,增加了对开发人员水平的要求;(3)系统中存在多个缓存时需要实现多级缓存的机制,需要开发人员手动编码,逻辑复杂、工作量大、业务逻辑繁琐,且整个代码与业务代码紧耦合。

技术实现思路

[0004]本专利技术为解决上述技术问题,提供了一种缓存方法,能够大大提高缓存实现的方便性。
[0005]本专利技术采用的技术方案如下:一种缓存方法,包括以下步骤:定义一个通用的缓存操作接口类;定义多个缓存实现类,其中,每个所述缓存实现类实现所述缓存操作接口类中的缓存存取方法;实例化每个所述缓存实现类并对每个实例进行命名,得到相应的多个缓存提供者;将每个所述缓存提供者放入缓存提供者容器;在接收到缓存操作请求后,从所述缓存提供者容器中选择缓存提供者进行缓存操作。
[0006]多个所述缓存实现类包括MemoryCache、RedisCache、DatabaseCache、EhCache中的一个或多个。
[0007]所述缓存操作请求包括获取、更新或删除缓存的请求。
[0008]在从所述缓存提供者容器中选择缓存提供者进行缓存操作之前,还包括:定义一个缓存管理器,所述缓存管理器用以管理多个所述缓存提供者,并配置所述多个缓存提供者中的一个缓存提供者作为默认缓存提供者;定义一个缓存代理类,所述缓存代理类实现所述缓存操作接口类中的缓存存取方法。
[0009]从所述缓存提供者容器中选择缓存提供者进行缓存操作,具体包括:所述缓存代理类通过所述缓存管理器获取所有的缓存提供者,并对所获取的多个缓存提供者按照优先级进行排序;根据排序遍历多个缓存提供者以查找目标缓存值;在查找到所述目标缓存值后,判断所述目标缓存值所在的缓存提供者是否优先级最高;如果所述目标缓存值所在的缓存提供者优先级最高,则直接返回所述目标缓存值;如果所述目标缓存值所在的缓存提供者优先级不是最高,则保存一份所述目标缓存值至优先级最高的缓存提供者中,并返回所述目标缓存值。
[0010]本专利技术的有益效果:本专利技术通过定义通用的缓存操作接口类,使得开发人员在使用缓存功能时仅需要面向该接口开发即可,简单方便;结合所定义的多个缓存实现类,并实例化并命名后作为缓存提供者放入缓存提供者容器,开发人员可根据业务需要方便地进行缓存类型的替换,无需修改业务代码,由此,大大提高了缓存实现的方便性。
附图说明
[0011]图1为本专利技术实施例的缓存方法的流程图;图2为本专利技术一个具体实施例的缓存方法的实现逻辑示意图;图3为本专利技术另一个具体实施例的缓存方法的实现逻辑示意图。
具体实施方式
[0012]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0013]如图1所示,本专利技术实施例的缓存方法包括以下步骤:S1,定义一个通用的缓存操作接口类。
[0014]首先定义一个通用的缓存操作接口类ICache,该通用的缓存操作接口类ICache中包含常用的缓存存取方法的定义。
[0015]S2,定义多个缓存实现类,其中,每个缓存实现类实现缓存操作接口类中的缓存存取方法。
[0016]在本专利技术的实施例中,多个缓存实现类包括MemoryCache、RedisCache、DatabaseCache、EhCache中的一个或多个。
[0017]举例而言,可定义一个缓存实现类MemoryCache,该类基于内存存储,实现了ICache中所有的缓存存取方法;并且,定义一个缓存实现类RedisCache,该类基于分布式Redis存储,实现了ICache中所有的缓存存取方法;并且,定义一个缓存实现类DatabaseCache,该类基于数据库表存储,实现了ICache中所有的缓存存取方法;并且,定义一个缓存实现类EhCache,该类基于数据库表存储,实现了ICache中所有的缓存存取方法。此外,还可以根据实际业务可能用到的其他存储类型定义其他的缓存实现类,同样实现ICache中所有的存取方法。
[0018]S3,实例化每个缓存实现类并对每个实例进行命名,得到相应的多个缓存提供者。
[0019]对每个缓存实现类进行实例化后,带有名称的实例对象称为缓存提供者。
[0020]S4,将每个缓存提供者放入缓存提供者容器。
[0021]本专利技术实施例可基于依赖注入机制,在业务系统运行时动态地将每个缓存实现类进行实例化并注入到缓存提供者容器中。
[0022]S5,在接收到缓存操作请求后,从缓存提供者容器中选择缓存提供者进行缓存操作。
[0023]在本专利技术的一个实施例中,在从缓存提供者容器中选择缓存提供者进行缓存操作之前,还需定义一个缓存管理器,缓存管理器用以管理多个缓存提供者,并配置多个缓存提供者中的一个缓存提供者作为默认缓存提供者。另外,还定义一个缓存代理类ChainCache,缓存代理类ChainCache代理所有缓存提供者,缓存代理类ChainCache可实现缓存操作接口类中的缓存存取方法。
[0024]在本专利技术的一个实施例中,缓存操作请求包括获取、更新或删除缓存的请求。
[0025]在本专利技术的一个实施例中,在接收到缓存操作请求后,如果指定了目标缓存的缓存提供者名称,则使用该指定的缓存提供者进行缓存操作;如果未指定目标缓存的缓存提供者名称,则使用默认缓存提供者进行缓存操作。
[0026]在本专利技术的另一个实施例中,在接收到缓存操作请求后,可根据多个缓存提供者的优先级进行缓存操作,具本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种缓存方法,其特征在于,包括以下步骤:定义一个通用的缓存操作接口类;定义多个缓存实现类,其中,每个所述缓存实现类实现所述缓存操作接口类中的缓存存取方法;实例化每个所述缓存实现类并对每个实例进行命名,得到相应的多个缓存提供者;将每个所述缓存提供者放入缓存提供者容器;在接收到缓存操作请求后,从所述缓存提供者容器中选择缓存提供者进行缓存操作。2.根据权利要求1所述的缓存方法,其特征在于,多个所述缓存实现类包括MemoryCache、RedisCache、DatabaseCache、EhCache中的一个或多个。3.根据权利要求2所述的缓存方法,其特征在于,所述缓存操作请求包括获取、更新或删除缓存的请求。4.根据权利要求3所述的缓存方法,其特征在于,在从所述缓存提供者容器中选择缓存提供者进行缓存操作之前,还包括:定义一...

【专利技术属性】
技术研发人员:范玉才
申请(专利权)人:中博信息技术研究院有限公司
类型:发明
国别省市:

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

1