System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 电商平台基于springCache的多级缓存框架的数据访问方法及系统技术方案_技高网

电商平台基于springCache的多级缓存框架的数据访问方法及系统技术方案

技术编号:40949910 阅读:3 留言:0更新日期:2024-04-18 20:24
本发明专利技术公开一种电商平台基于springCache的多级缓存框架的数据访问方法,包括以下步骤:响应于服务请求查询一级缓存;当在一级缓存中未获取到服务所需求的数据的情况下,基于服务查询二级缓存,如果二级缓存中存在服务所需的数据则将该数据写入一级缓存;其中,基于每个服务查询二级缓存时,首先识别当前服务的内存中第一预设标志位的值,当第一预设标志位的值满足预设条件时,则将当前及后续线程暂时挂起,不作操作;当在二级缓存中未获取到服务所需求的数据的情况下,基于服务查询数据库,如果数据库中存在服务所需的数据则将该数据写入二级缓存和一级缓存;其中,所述一级缓存采用Caffeine,所述二级缓存采用redis。提高访问效率降低二级缓存及数据库的访问压力。

【技术实现步骤摘要】

本专利技术属于缓存管理,尤其涉及一种电商平台基于springcache的多级缓存框架的数据访问方法及系统。


技术介绍

1、springcache是一个支持jsr107规范的通用缓存框架,开发者只需要替换缓存源就能达到通过springcache框架使用不同缓存的效果。参见附图1,多级缓存情况下获取缓存的流程通常为:先找一级缓存,如果存在数据就是命中了缓存,直接使用缓存数据进行后续处理。如果找不到,就找二级缓存。二级缓存命中了就更新一级缓存,并使用缓存数据代入到后续业务流程中处理。如果二级缓存也没有,那就只能查数据库,将结果写入一级和二级缓存,并使用缓存数据进行后续处理。

2、而springcache在获取缓存的时候有两种方式,分别对应cache类中的两个方法。第一种是单纯通过一个key获取缓存数据,其抽象实现类abstractvalueadaptingcache主要实现方式在可扩展的lookup方法中。另一种为了防止并发情况下,多线程都获取不到缓存而重复执行业务代码并重复将缓存写入缓存源,导致过多冗余操作而提供的一个同步阻塞的缓存获取方式。大体上逻辑和第一种是一样的,并且复用了lookup方法。简单归纳一下就是:如果缓存有数据(不管一级还是二级)就直接得到数据,否则就加锁调用业务方法查数据库获取数据(加锁是为了防止多线程重复查库),并放入缓存。最后解锁。其中加锁之后又做了一次lookup,这是一个标准的dcl双重检查所的概念。

3、现有技术应用于普通的场景没什么问题,但是,当针对于电商销售平台这种并发量比较高的场景,在get方法中,先进入lookup方法,发现一级缓存找不到数据,那么就去找二级缓存redis。参见图2,示出了没有加锁的情况,意味着二级缓存redis这个集中式缓存中间件会因为某个应用实例的某个业务的一级缓存不存在而承载本来应该由一级缓存承担的压力。而在多级缓存的场景中redis本来应该是个一级缓存以外的备选方案,让它承担这么大压力显然不符合初衷,也容易有性能问题(网络传输等开销)。而电商销售平台这种分布式应用大并发情况下是多台实例都会这样将流量打到redis中,容易增加中间件崩溃的风险。


技术实现思路

1、为解决上述问题,本专利技术的目的是提供一种电商平台基于springcache的多级缓存框架的数据访问方法及系统,针对在多级缓存框架中获取缓存时的加锁粒度上做出了改进,使得原本一级缓存数据不存在导致二级缓存redis暴露在大流量下的问题得到改善。

2、为实现上述目的,本专利技术的技术方案为:一种电商平台基于springcache的多级缓存框架的数据访问方法,包括以下步骤:响应于服务请求查询一级缓存以获取服务所需求的数据;当在一级缓存中未获取到服务所需求的数据的情况下,基于服务查询二级缓存,如果二级缓存中存在服务所需的数据则将该数据写入一级缓存以获取该数据;其中,基于每个服务查询二级缓存时,首先识别当前服务的内存中第一预设标志位的值,当第一预设标志位的值满足预设条件时,则将当前及后续线程暂时挂起,不作操作;当在二级缓存中未获取到服务所需求的数据的情况下,基于服务查询数据库,如果数据库中存在服务所需的数据则将该数据写入二级缓存和一级缓存以获取该数据;其中,所述一级缓存采用caffeine,所述二级缓存采用redis。

3、优选的,所述方法还包括:基于每个服务查询数据库时,首先识别当前服务的内存中第二预设标志位的值,当第二预设标志位的值满足预设条件时,则将当前及后续线程暂时挂起,不作操作。

4、优选的,所述方法还包括:基于每个服务查询数据库时,首先识别服务所在服务集群的缓存中间件中的第三预设标志位的值,当第三预设标志位的值满足预设条件时,则将当前及后续线程暂时挂起,不作操作;其中,与所述数据库关联的服务器为分布式集群服务器。

5、优选的,在如果二级缓存中存在服务所需的数据则将该数据写入一级缓存之后还包括,清除所述第一预设标志位的值。

6、优选的,在如果数据库中存在服务所需的数据则将该数据写入二级缓存和一级缓存之后还包括,清除所述第二预设标志位的值。

7、优选的,在如果数据库中存在服务所需的数据则将该数据写入二级缓存和一级缓存之后还包括,清除所述第三预设标志位的值。

8、优选的,所述方法还包括:基于springcache框架对get函数进行重构以实现数据的访问和获取,在get函数中调用lookup函数对所述一级缓存、二级缓存以及数据库进行数据查询。

9、基于相同的构思,本专利技术还提供一种电商平台基于springcache的多级缓存框架的数据访问系统,包括:服务响应模块,用于响应于服务请求查询一级缓存以获取服务所需求的数据;初次查询模块,用于当在一级缓存中未获取到服务所需求的数据的情况下,基于服务查询二级缓存,如果二级缓存中存在服务所需的数据则将该数据写入一级缓存以获取该数据;其中,基于每个服务查询二级缓存时,首先识别当前服务的内存中第一预设标志位的值,当第一预设标志位的值满足预设条件时,则将当前及后续线程暂时挂起,不作操作;二次查询模块,用于当在二级缓存中未获取到服务所需求的数据的情况下,基于服务查询数据库,如果数据库中存在服务所需的数据则将该数据写入二级缓存和一级缓存以获取该数据;其中,所述一级缓存采用caffeine,所述二级缓存采用redis。

10、基于相同的专利技术构思,本专利技术还提供一种计算机设备,包括:存储器,所述存储器用于存储处理程序;处理器,所述处理器执行所述处理程序时实现任意一项所述的电商平台基于springcache的多级缓存框架的数据访问方法。

11、基于相同的专利技术构思,本专利技术还提供一种可读存储介质,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现任意一项所述的电商平台基于springcache的多级缓存框架的数据访问方法。

12、本专利技术由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:

13、1、本专利技术的技术方案中当一级缓存中没有服务所需的数据的时候,访问二级缓存redis,在访问二级缓存redis的时候,首先识别当前服务的内存中第一预设标志位的值,当第一预设标志位的值满足预设条件时,则说明当前正有其它线程在做操作,为了避免对该数据的重复访问,将当前及后续线程暂时挂起,不作操作,相当于增加了本地锁,避免如图2所示的同一时刻多个服务/线程对相同数据进行访问。这对于电商平台具有非常大的意义,尤其是在促销活动时,能够很好的缓解二级缓存redis的访问带宽压力,同时也提高访问效率。在本实施例中,一级缓存采用caffeine能够大幅度减小访问过程中的网络开销,此外,由于增加了本地锁,减少了大量重复线程对二级缓存redis的访问,在此前提之下,由于二级缓存redis采用单线程模型,单线程模型消除了多线程之间的竞争条件和上下文切换开销,因此降低了系统的复杂性,能够高效的利用缓存,二者配合能够获得很好的访问效率,更低的本文档来自技高网...

【技术保护点】

1.一种电商平台基于springCache的多级缓存框架的数据访问方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的电商平台基于springCache的多级缓存框架的数据访问方法,其特征在于,所述方法还包括:

3.根据权利要求1所述的电商平台基于springCache的多级缓存框架的数据访问方法,其特征在于,所述方法还包括:

4.根据权利要求1所述的电商平台基于springCache的多级缓存框架的数据访问方法,其特征在于,在如果二级缓存中存在服务所需的数据则将该数据写入一级缓存之后还包括,清除所述第一预设标志位的值。

5.根据权利要求2所述的电商平台基于springCache的多级缓存框架的数据访问方法,其特征在于,在如果数据库中存在服务所需的数据则将该数据写入二级缓存和一级缓存之后还包括,清除所述第二预设标志位的值。

6.根据权利要求3所述的电商平台基于springCache的多级缓存框架的数据访问方法,其特征在于,在如果数据库中存在服务所需的数据则将该数据写入二级缓存和一级缓存之后还包括,清除所述第三预设标志位的值。

7.根据权利要求1所述的电商平台基于springCache的多级缓存框架的数据访问方法,其特征在于,所述方法还包括:基于springCache框架对get函数进行重构以实现数据的访问和获取,在get函数中调用lookup函数对所述一级缓存、二级缓存以及数据库进行数据查询。

8.一种电商平台基于springCache的多级缓存框架的数据访问系统,其特征在于,包括:

9.一种计算机设备,其特征在于,包括:

10.一种可读存储介质,其特征在于,所述可读存储介质上存储有处理程序,所述处理程序被处理器执行时实现如权利要求1至权利要求7中任意一项所述的电商平台基于springCache的多级缓存框架的数据访问方法。

...

【技术特征摘要】

1.一种电商平台基于springcache的多级缓存框架的数据访问方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的电商平台基于springcache的多级缓存框架的数据访问方法,其特征在于,所述方法还包括:

3.根据权利要求1所述的电商平台基于springcache的多级缓存框架的数据访问方法,其特征在于,所述方法还包括:

4.根据权利要求1所述的电商平台基于springcache的多级缓存框架的数据访问方法,其特征在于,在如果二级缓存中存在服务所需的数据则将该数据写入一级缓存之后还包括,清除所述第一预设标志位的值。

5.根据权利要求2所述的电商平台基于springcache的多级缓存框架的数据访问方法,其特征在于,在如果数据库中存在服务所需的数据则将该数据写入二级缓存和一级缓存之后还包括,清除所述第二预设标志位的值。

6.根据权利要求3所述的电商平台...

【专利技术属性】
技术研发人员:陆臻浩成圣昌胡少群
申请(专利权)人:上海百秋新网商数字科技有限公司
类型:发明
国别省市:

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

1