一种高性能的分布式缓存的实现方法及系统技术方案

技术编号:35261306 阅读:24 留言:0更新日期:2022-10-19 10:20
本发明专利技术公开了一种高性能的分布式缓存的实现方法及系统,所述方法包括:步骤S1、将用户针对目标数据的读请求发送至缓存;步骤S2、判断缓存中是否有目标数据;若是,即缓存命中,从缓存中直接读取目标数据;若否,即缓存未命中,则判定用户发送的同一读请求次数是否超过阈值X;若否,则进入步骤S3;若是,进入步骤S4;步骤S3、将读请求发送至数据库中,判断数据库中是否存对应的目标数据;若是,则从数据库中读取目标数据,并将读取的目标数据回填到缓存中;若否,则数据库返回对应空结果至缓存中存储,并为空结果设置过期时间;步骤S4、将缓存中存储的对应空结果返回给用户。本发明专利技术有效的解决了缓存穿透问题。决了缓存穿透问题。决了缓存穿透问题。

【技术实现步骤摘要】
一种高性能的分布式缓存的实现方法及系统


[0001]本专利技术涉及计算机
,具体涉及一种高性能的分布式缓存的实现方法及系统。

技术介绍

[0002]操作系统有很多存储区域,如硬盘,U盘,内存,缓存;它们的读取速度依次升高,在系统设计时,为了提高系统的运行效率,需要把常用的数据保存在读取速度高的地方,这就是缓存机制。
[0003]现有的缓存处理流程一般如下:前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。但这样的缓存处理流程经常造成缓存穿透、缓存击穿、缓存雪崩、缓存污染等问题。其中,缓存穿透即在缓存和数据库中都没有数据,而用户不断发起请求,这时的用户很可能是攻击者,这种恶意攻击会使得用户发送的恶意请求都打到数据库,导致数据库负载过大。

技术实现思路

[0004]鉴于以上技术问题,本专利技术的目的在于提供一种高性能的分布式缓存的实现方法,解决传统的缓存处理流程容易造成缓存穿透的问题。
[0005]本专利技术采用以下技术方案:
[0006]一种高性能的分布式缓存的实现方法,包括以下步骤:
[0007]步骤S1、将用户针对目标数据的读请求发送至缓存;
[0008]步骤S2、判断缓存中是否有目标数据;
[0009]若是,即缓存命中,从缓存中直接读取目标数据;
[0010]若否,即缓存未命中,则判定用户发送的同一读请求次数是否超过阈值X;若否,则进入步骤S3;若是,进入步骤S4;
[0011]步骤S3、将读请求发送至数据库中,判断数据库中是否存对应的目标数据;
[0012]若是,则从数据库中读取目标数据,并将读取的目标数据回填到缓存中;
[0013]若否,则数据库返回对应空结果至缓存中存储,并为空结果设置过期时间;其中,当空结果在缓存中存储时间超过过期时间时,从缓存中自动清除;
[0014]步骤S4、将缓存中存储的对应空结果返回给用户。
[0015]可选的,步骤S3中,将所述读请求发送至数据库步骤之前还包括:
[0016]检测发送同一读请求的并发用户是否达到预设数量;
[0017]若是,则执行缓存击穿防止流程,具体为:
[0018]获取缓存单元的业务唯一主键,根据所述唯一主键获取互斥锁,将所述互斥锁随机发送至并发用户中的用户;
[0019]若所述数据库存在对应目标数据,则将所述目标数据返回至获取到互斥锁的用
户,并将目标数据回填至缓存;然后将缓存中的对应目标数据发送给并发用户中的其他未获取到互斥锁的用户。
[0020]可选的,还包括缓存雪崩防止流程:按照预设时间维护缓存数据的更新和/或失效。
[0021]可选的,所述按照预设时间维护缓存数据的更新和/或失效,包括:定时增加数据至缓存和/或删除缓存中的数据。
[0022]可选的,所述按照预设时间维护缓存数据的更新和/或失效,包括:随机设置缓存中各数据的失效时间,或将缓存中的热点数据设置为永远不失效,或将热点数据分布在不同缓存中。
[0023]可选的,步骤S2中,若缓存命中,则从缓存中读取目标数据,包括:
[0024]所述缓存命中包括一级缓存命中或二级缓存命中;若一级缓存命中,则从一级缓存中读取数据;若一级缓存未命中,二级缓存命中,则从二级缓存中读取数据。
[0025]可选的,还包括缓存不一致防止流程:当接收到写请求时,先根据所述写请求对应的新数据更新数据库,若所述缓存中存储有所述写请求对应的旧数据,再删除缓存中存储的旧数据。
[0026]一种高性能的分布式缓存的实现系统,包括:
[0027]请求发送单元,用于将用户针对目标数据的读请求发送至缓存;
[0028]第一判定单元,用于判断缓存中是否有目标数据;若是,即缓存命中,从缓存中直接读取目标数据;若否,即缓存未命中,则判定用户发送的同一读请求次数是否超过阈值;
[0029]第二判定单元,用于在第一判定单元判定缓存未命中时,判定用户发送的同一读请求次数是否超过阈值;
[0030]第三判定单元,用于在第二判定单元在判定用户发送的同一读请求次数未超过阈值时,将读请求发送至数据库中,并判断数据库中是否存对应的目标数据;
[0031]回填单元,用于在第三判定单元判定数据库中存在对应的目标数据时,从数据库中读取目标数据,并将读取的目标数据回填到缓存中;
[0032]存储单元,用于在第三判定单元判定数据库中不存在对应的目标数据时,从数据库返回对应空结果至缓存中存储,并为空结果设置过期时间;其中,当空结果在缓存中存储时间超过过期时间时,从缓存中自动清除;
[0033]返回单元,用于在第二判定单元判定用户发送的同一读请求次数超过阈值时,将缓存中存储的对应空结果返回给用户。一种电子设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求所述的高性能的分布式缓存的实现方法。
[0034]一种计算机存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时,实现所述的高性能的分布式缓存的实现方法。
[0035]相比现有技术,本专利技术的有益效果在于:
[0036]本专利技术通过在所述缓存和数据库都不存在目标数据,则返回空结果,并检测用户ID针对同一读请求(即针对同一目标数据提出读取请求)次数是否超过阈值X,若是,则将空结果存储至缓存,并设置所述空结果的过期时间,实现在用户针对同一目标数据不断发起
读请求时,从缓存中读取空结果数据,使得数据库接收不到用户ID针对目标数据的大量读请求,可以避免一些用户在攻击服务器时,反复发送针对同一目标数据的读请求,造成数据库压力过大的问题,因此能够有效解决缓存穿透的问题。
[0037]进一步的,通过在所述数据库存在目标数据时,则将所述目标数据返回至获取到互斥锁的用户,并将目标数据回填至缓存,这样,缓存中将存在目标数据,其他用户可通过缓存获取目标数据,避免并发用户特别多,同时去数据库去取数据,引起数据库压力瞬间增大的问题;
[0038]进一步的,本专利技术通过所述按照预设时间维护缓存数据的更新和/或失效,例如,随机设置缓存中各数据的失效时间,或将缓存中的热点数据设置为永远不失效,或将热点数据分布在不同缓存中,这样,用户可以通过缓存查询数据,避免查询数据量巨大,引起数据库压力过大甚至down机的问题;
[0039]进一步的,本专利技术通过删除缓存中存储的旧数据,然后再下一次有读请求时,缓存中没有目标数据,直接读取数据库的数据后,回填数据,这样,可以使缓存的数据是最新的,可以避免不删除缓存,而更新缓存时,若存在一个以上的线程更新数据库时,而数据库上是某一个线程更新的新数据,而缓存上存储的数据却是另一个线程存储的旧数据,造成数据库数据与缓存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高性能的分布式缓存的实现方法,其特征在于,包括以下步骤:步骤S1、将用户针对目标数据的读请求发送至缓存;步骤S2、判断缓存中是否有目标数据;若是,即缓存命中,从缓存中直接读取目标数据;若否,即缓存未命中,则判定用户发送的同一读请求次数是否超过阈值X;若否,则进入步骤S3;若是,进入步骤S4;步骤S3、将读请求发送至数据库中,判断数据库中是否存对应的目标数据;若是,则从数据库中读取目标数据,并将读取的目标数据回填到缓存中;若否,则数据库返回对应空结果至缓存中存储,并为空结果设置过期时间;其中,当空结果在缓存中存储时间超过过期时间时,从缓存中自动清除;步骤S4、将缓存中存储的对应空结果返回给用户。2.根据权利要求1所述的高性能的分布式缓存的实现方法,其特征在于,步骤S3中,将所述读请求发送至数据库步骤之前还包括:检测发送同一读请求的并发用户是否达到预设数量;若是,则执行缓存击穿防止流程,具体为:获取缓存单元的业务唯一主键,根据所述唯一主键获取互斥锁,将所述互斥锁随机发送至并发用户中的用户;若所述数据库存在对应目标数据,则将所述目标数据返回至获取到互斥锁的用户,并将目标数据回填至缓存;然后将缓存中的对应目标数据发送给并发用户中的其他未获取到互斥锁的用户。3.根据权利要求1所述的高性能的分布式缓存的实现方法,其特征在于,还包括缓存雪崩防止流程:按照预设时间维护缓存数据的更新和/或失效。4.根据权利要求3所述的高性能的分布式缓存的实现方法,其特征在于,所述按照预设时间维护缓存数据的更新和/或失效,包括:定时增加数据至缓存和/或删除缓存中的数据。5.根据权利要求3所述的高性能的分布式缓存的实现方法,其特征在于,所述按照预设时间维护缓存数据的更新和/或失效,包括:随机设置缓存中各数据的失效时间,或将缓存中的热点数据设置为永远不失效,或将热点数据分布在不同缓存中。6.根据权利要求1所述的高性能的分布式缓存的实现方法,其特征在于,步骤S2中,若缓存命中,则从缓存中读取目标数据,包括:所述缓存命中包括一级缓存命中或二...

【专利技术属性】
技术研发人员:王妙玉周亮王伦吴宁泉
申请(专利权)人:广东好太太智能家居有限公司
类型:发明
国别省市:

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

1