System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于缓存管理,尤其涉及一种电商平台基于springcache的多级缓存失效时间处理方法及系统。
技术介绍
1、在缓存管理中,不同的数据会有不同的ttl(time to live,生存时间)策略。在redis中可以针对不同的key设置不同的ttl时间。但是一般的java内存缓存框架(如ehcache、caffeine、guava cache等)无法为每一个key设置不同ttl,因为这样管理起来会非常复杂,而且在检查缓存数据是否失效时性能极差。所以一般内存缓存框架会把一组相同ttl策略的缓存数据放在一起进行管理。因此,需要将失效时间相同的业务与特定的region进行对应绑定。运行于java8平台基于spring框架的web应用,框架底层是基于springcache的缓存框架,通常使用caffeine作为一级缓存,redis作为集中式二级缓存。
2、springcache是一个支持jsr107规范的通用缓存框架,开发者只需要替换缓存源就能达到通过springcache框架使用不同缓存的效果。但是想要通过springcache来同时操作caffeine和redis就会遇到一个问题:redis缓存粒度与caffeine缓存的粒度不一致。redis的缓存过期时间是每个key都有单独的过期时间,而caffeine的最小粒度是一个cache实例。一个cache实例其实是一个集合,集合中每个元素都是一个key。所以从粒度上来说,caffeine是更粗的,因此在设置缓存过期时间的时候只能向caffeine妥协,只能针对一个ca
3、现有技术中,通过自定义注解的方式额外再加一个注解专门用于设置缓存过期时间,过期时间是可以灵活配置的。但是如果过期时间需要开发时自行指定的话,功能一多必然容易乱、容易出错。
4、现有技术中,还有根据文档中的描述将有限的region和对应的过期时间放在了配置文件中。但是二级缓存过期时间完全是和一级缓存一样的。那么除非某台机器断电,服务挂了或者重启,否则实际上二级缓存很多时候不会被使用到。失去了二级缓存的意义。
5、在gitee中也有人提出j2cache无法给不同缓存设置不同过期时间。但是官方给出的回答是:在程序中定义缓存数据的有效期会导致缓存不可控,一旦数据出问题无从查起,因此j2cache的所有缓存的有效期都必须在一级缓存的配置中预设好再使用。这个回答只是说明缓存的失效时间需要通过预先配置防止出现类似上述灵活定义过期时间引起混乱的问题,但是没有回答为什么不能分别设置一级缓存和二级缓存的过期时间。
6、综上,现有技术存在如下问题:
7、1、在region与过期时间绑定的基础上无法支持一级缓存和二级缓存分别设置过期时间;
8、2、通过配置文件来管理所有的缓存过期时间会使得原本作为系统级别的配置文件过于臃肿。
9、而在电商平台这个具体的应用场景之下,由于商品种类繁多,图片缓存也远大于普通服务,访问请求及数据并发量大,这就对缓存的管理提出了更高的要求,即在访问请求及数据并发量大的情况之下如何获得更高的访问效率,这关乎用户对电商平台的使用体验。
技术实现思路
1、为解决上述问题,本专利技术的目的是提供一种电商平台基于springcache的多级缓存失效时间处理方法及系统,能够对一级缓存和二级缓存的过期时间分别进行设置,通过ttlenum的方式管理缓存的过期时间,提高系统的灵活性和维护的便捷性。
2、为实现上述目的,本专利技术的技术方案为:一种电商平台基于springcache的多级缓存失效时间处理方法,包括以下步骤:基于springcache对一级缓存和二级缓存分别配置过期时间,通过java中的enum枚举类配置有限的过期时间选项,其中每个选项与cachename存在对应关系,从而实现cachename与过期时间的绑定;根据cachename的属性在cachenamettlenum中查找具有相同参数的成员并进行绑定;接收到访问请求后,基于预设的自定义解析器对访问请求中目标访问的缓存数据的属性进行解析,在解析结果满足预设条件的情况下,设置一级缓存过期时间和二级缓存过期时间;创建缓存实例并设置过期时间。
3、优选的,根据cachename的属性在cachenamettlenum中查找具有相同参数的成员并进行绑定的方法包括:通过cachename找到cachenamettlenum对应cachename的成员,获得其中的ttlenum;通过findbyname命令从cachenamettlenum中找cachename属性与传入的cachename参数相同的成员,从而获得缓存的cachename必须使用cachenamettlenum中存在的cachename属性的约束。
4、优选的,基于预设的自定义解析器对访问请求中目标访问的缓存数据的属性进行解析的方法包括:解析缓存注解、创建rediscaffeinecache,基于cachename获取对应的过期时间;判断一级缓存过期时间是否小于二级缓存过期时间,如果是,设置一级缓存过期时间和二级缓存过期时间。
5、优选的,基于预设的自定义解析器对访问请求中目标访问的缓存数据的属性进行解析还包括:在使用注解时使用常量类中的成员作为注解的cachename;对于原生springcache的缓存注解指定value的值;使用springcache的注解时,cachename要使用维护的常量类中的成员,在框架解析缓存注解的时候使用定义的cacheexpireresolver解析器,用注解上的cachename去找cachenamettlenum对应的成员,找到之后就会校验缓存时间是否满足约束条件。
6、优选的,如果springcache注解上的cachename属性也填写cachenameconstant常量类中的选项,然后在解析注解时通过常量类的选项能够对应到cachenamettlenum中某个选项的cachename属性上,那么过期时间的约束也能得到实现。
7、优选的,所述方法还包括:将缓存注解预先指定cachename,开发者只需要选择具体的注解而不需要再指定cachename。
8、优选的,所述方法还包括:caffeine的过期时间和实例的创建都需要在rediscaffeinecache创建后和cacheexpireresolver解析注解之后进行。
9、基于相同的构思,本专利技术还提供一种电商平台基于springcache的多级缓存失效时间处理系统,包括:绑定模块,用于基于springcache对一级缓存和二级缓存分别配置过期时间,通过java中的enum枚举类配置有限的过期时间选项,其中每个选项与cachename存在对应关系,从而实现cachename与过期时间的绑定;查询模块,用于根据cachename的属性在cachenamettlenum中查找具有相同参数的成本文档来自技高网...
【技术保护点】
1.一种电商平台基于springCache的多级缓存失效时间处理方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的电商平台基于springCache的多级缓存失效时间处理方法,其特征在于,根据cacheName的属性在CacheNameTtlEnum中查找具有相同参数的成员并进行绑定的方法包括:
3.根据权利要求1所述的电商平台基于springCache的多级缓存失效时间处理方法,其特征在于,基于预设的自定义解析器对访问请求中目标访问的缓存数据的属性进行解析的方法包括:
4.根据权利要求3所述的电商平台基于springCache的多级缓存失效时间处理方法,其特征在于,基于预设的自定义解析器对访问请求中目标访问的缓存数据的属性进行解析还包括:
5.根据权利要求1所述的电商平台基于springCache的多级缓存失效时间处理方法,其特征在于,如果springCache注解上的cacheName属性也填写CacheNameConstant常量类中的选项,然后在解析注解时通过常量类的选项能够对应到CacheNameTtlEnum中某
6.根据权利要求1所述的电商平台基于springCache的多级缓存失效时间处理方法,其特征在于,所述方法还包括:将缓存注解预先指定cacheName,开发者只需要选择具体的注解而不需要再指定cacheName。
7.根据权利要求1所述的电商平台基于springCache的多级缓存失效时间处理方法,其特征在于,所述方法还包括:caffeine的过期时间和实例的创建都需要在RedisCaffeineCache创建后和cacheExpireResolver解析注解之后进行。
8.一种电商平台基于springCache的多级缓存失效时间处理系统,其特征在于,包括:
9.一种计算机设备,其特征在于,包括:
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如权利要求1至权利要求7中任意一项所述的电商平台基于springCache的多级缓存失效时间处理方法。
...【技术特征摘要】
1.一种电商平台基于springcache的多级缓存失效时间处理方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的电商平台基于springcache的多级缓存失效时间处理方法,其特征在于,根据cachename的属性在cachenamettlenum中查找具有相同参数的成员并进行绑定的方法包括:
3.根据权利要求1所述的电商平台基于springcache的多级缓存失效时间处理方法,其特征在于,基于预设的自定义解析器对访问请求中目标访问的缓存数据的属性进行解析的方法包括:
4.根据权利要求3所述的电商平台基于springcache的多级缓存失效时间处理方法,其特征在于,基于预设的自定义解析器对访问请求中目标访问的缓存数据的属性进行解析还包括:
5.根据权利要求1所述的电商平台基于springcache的多级缓存失效时间处理方法,其特征在于,如果springcache注解上的cachename属性也填写cachenameconstant常量类中的选项,然后在解析注解时通过常量类的选项能够对应到cach...
【专利技术属性】
技术研发人员:陆臻浩,成圣昌,刘志成,
申请(专利权)人:上海百秋新网商数字科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。