一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

防缓存击穿方法、装置、设备及可读存储介质与流程

2022-03-19 22:30:42 来源:中国专利 TAG:


1.本发明涉及数据存储领域,尤其涉及一种防缓存击穿方法、装置、电子设备及可读存储介质。


背景技术:

2.正常情况下,用户获取数据时,io单元首先去缓存中查看用户所需数据是否存在,当缓存中没有用户所需数据时,io单元再进入数据库获取数据。
3.当多名用户同时请求获取缓存中没有但数据库中有的数据时,由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,从而造成缓存击穿。缓存击穿导致数据库压力多大,影响用户获取数据的速度,甚至会出现服务器宕机。


技术实现要素:

4.本发明提供一种防缓存击穿方法、装置、电子设备及计算机可读存储介质,其目的在于降低后台数据库出现缓存击穿的概率。
5.为实现上述目的,本发明提供的一种防缓存击穿方法,包括:
6.预设时间段内接收到超过预设数量的查询请求时,获取所述查询请求的来源;
7.从所述查询请求中筛选出来源相同的查询请求,得到同源查询请求,并按照所述查询请求的接收时间,从所述同源查询请求中选择第一个查询请求发送至本地缓存,并利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁;
8.从所述查询请求中筛选出来源不相同的查询请求,得到异源查询请求,提取所述异源查询请求中的待查询标签;
9.判断本地缓存中是否存在与所述待查询数据标签对应的查询数据;
10.若所述本地缓存中存在与所述待查询数据标签对应的查询数据,则将所述待查询数据标签对应的所述查询请求发送至本地缓存;
11.若所述本地缓存中不存在与所述待查询数据标签对应的查询数据,则从所述待查询数据标签中筛选出相同待查询数据标签及不同待查询数据标签;
12.根据所述相同待查询数据标签对应的查询请求的接收时间,将所述相同待查询数据标签对应的查询请求中的第一个查询请求发送至后台数据库,并利用预设的缓存刷新锁对剩余的相同待查询数据标签对应的查询请求进行加锁;
13.将所述不同待查询数据标签对应的查询请求放入预设的消息队列中,根据所述消息队列,将所述不同待查询数据标签对应的查询请求发送至后台数据库。
14.可选地,所述从所述查询请求中筛选出来源相同的查询请求,得到同源查询请求,包括:
15.解析所述查询请求,得到所述查询请求相对应的地址索引标签;
16.从所述地址索引标签中提取所述查询请求的ip地址;
17.从所述查询请求中挑选ip地址相同的查询请求,得到同源查询请求。
18.可选地,所述解析所述查询请求,得到所述查询请求相对应的地址索引标签,包括:
19.利用预设的服务连接器对所述查询请求进行解析,得到所述查询请求的请求头;
20.提取所述请求头中的统一资源定位符,并对所述统一资源定位符进行翻译,得到所述查询请求相对应的地址索引标签。
21.可选地,所述从所述查询请求中筛选出来源不相同的查询请求,得到异源查询请求,包括:
22.解析所述查询请求,得到所述查询请求相对应的地址索引标签;
23.从所述地址索引标签中提取所述查询请求的ip地址;
24.从所述查询请求中挑选ip地址不同的查询请求,得到异源查询请求。
25.可选地,所述根据所述相同待查询数据标签对应的查询请求的接收时间,将所述相同待查询数据标签对应的查询请求中的第一个查询请求发送至后台数据库,并利用预设的缓存刷新锁对剩余的相同待查询数据标签对应的查询请求进行加锁,包括:
26.获取所述查询请求的时间戳,根据所述时间戳从所述相同待查询数据标签对应的查询请求中选择第一查询请求,并利用预设的缓存刷新锁将所述相同待查询数据标签对应的查询请求中除第一查询请求的其余查询请求进行加锁,将所述第一查询请求发送至所述后台数据库进行读取操作;
27.将从所述后台数据库读取得到的查询数据写入本地缓存中;
28.将所述相同待查询数据标签对应的查询请求中除第一查询请求的其余查询请求发送到所述本地缓存中。
29.可选地,所述判断本地缓存中是否存在与所述待查询数据标签对应的查询数据,包括:
30.提取所述待查询数据标签中的索引编码;
31.根据所述索引编码,查询所述本地缓存是否含有与所述索引编码对应的查询数据;
32.当所述本地缓存中存在与所述待查询数据标签对应的查询数据时,则将所述待查询数据标签对应的所述查询请求发送至本地缓存;
33.当所述本地缓存中不存在与所述待查询数据标签对应的查询数据时,则从所述待查询数据标签中筛选出相同待查询数据标签及不同待查询数据标签。
34.可选地,所述根据所述消息队列,将所述不同待查询数据标签对应的查询请求发送至后台数据库中进行读取操作,包括:
35.解析所述查询请求,得到所述不同待查询数据标签对应的查询请求对应的时间戳;
36.根据所述时间戳,将所述不同待查询数据标签对应的查询请求依次发送至所述后台数据库中,并时刻监督所述后台数据库中的查询请求是否超过预设阈值;
37.当所述后台数据库中的查询请求超过预设阈值时,停止从所述消息队列发送查询请求至所述后台数据库,直至所述后台数据库中读取查询数据的查询请求再次小于所述预设阈值。
38.为了解决上述问题,本发明还提供一种防缓存击穿装置,所述装置包括:
39.同源查询请求处理模块,用于从所述查询请求中筛选出来源相同的查询请求,得到同源查询请求,并按照所述查询请求的接收时间,从所述同源查询请求中选择第一个查询请求发送至本地缓存,并利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁;
40.异源查询请求处理模块,用于从所述查询请求中筛选出来源不相同的查询请求,得到异源查询请求,提取所述异源查询请求中的待查询标签,在本地缓存中存在与所述待查询数据标签对应的查询数据时,将所述待查询数据标签对应的所述查询请求发送至本地缓存,在所述本地缓存中不存在与所述待查询数据标签对应的查询数据时,从所述待查询数据标签中筛选出相同待查询数据标签及不同待查询数据标签,根据所述相同待查询数据标签对应的查询请求的接收时间,将所述相同待查询数据标签对应的查询请求中的第一个查询请求发送至后台数据库,并利用预设的缓存刷新锁对剩余的相同待查询数据标签对应的查询请求进行加锁,及将所述不同待查询数据标签对应的查询请求放入预设的消息队列中,根据所述消息队列,将所述不同待查询数据标签对应的查询请求发送至后台数据库。
41.为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
42.存储器,存储至少一个计算机程序;及
43.处理器,执行所述存储器中存储的计算机程序以实现上述所述的防缓存击穿方法。
44.为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的防缓存击穿方法。
45.本发明实施例提出的防缓存击穿方法、装置、电子设备及可读存储介质首先通过对来源相同的查询请求进行加锁处理,从而限制用户短时间进行大量操作,减少了资源占用以及重复请求带来的后端服务压力;其次通过对高并发情况下的查询请求进行加锁处理,减少了重复请求带来的数据库压力,从而防止了数据库压力过大造成缓存击穿;最后,利用消息队列对高并发且不相同的查询请求进行异步处理,减少了数据库的压力,防止了数据库阻塞。
附图说明
46.图1为本发明一实施例提供的防缓存击穿方法的流程示意图;
47.图2为本发明一实施例提供的防缓存击穿装置的模块示意图;
48.图3为本发明一实施例提供的实现防缓存击穿方法的电子设备的内部结构示意图;
49.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
50.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
51.本发明实施例提供一种防缓存击穿方法。所述防缓存击穿方法的执行主体包括但不限于服务端、终端等能够被配置为执行本技术实施例提供的该方法的电子设备中的至少
一种。换言之,所述防缓存击穿方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端可以包括独立的服务器,也可以包括提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(contentdelivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
52.参照图1所示的本发明一实施例提供的防缓存击穿方法的流程示意图,在本发明实施例中,所述防缓存击穿方法包括:
53.s1、预设时间段内接收到超过预设数量的查询请求时,获取所述查询请求的来源。
54.本发明实施例中,所述预设时间段可以是,例如5s;以及所述预设数量可以根据后台数据库所能承受的最大访问量进行设定,如20条。
55.进一步地,所述查询请求可以是用户发送的想要从数据库中获取相关数据的请求动作,例如,在qq消息界面,用户通过拖拽页面往下滑动,可以获取待阅读的消息数量。
56.本发明实施例中,所述查询请求的来源是指发送所述查询请求的ip地址。
57.s2、从所述查询请求中筛选出来源相同的查询请求,得到同源查询请求,并按照所述查询请求的接收时间,从所述同源查询请求中选择第一个查询请求发送至本地缓存中,并利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁。
58.本发明实施例中,所述同源查询请求是指来自同一ip地址的查询请求,即同一个ip地址在预设时间段内连续发送的查询请求。例如,在qq消息界面,多次拖拽页面往下滑动以获取待阅读的消息数量。本发明实施例按照所述查询请求的接收时间,从所述同源查询请求中选择第一个查询请求发送至本地缓存中,并利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁。
59.应该了解,在所述预设时间内,如5s内,来自同一个ip地址的查询请求,通常情况下属于相同的查询请求多次发送,因此,为了减少本地缓存及后台数据库的压力,本发明实施例只从所述同源查询请求中选择第一个查询请求发送至本地缓存中,进一步地,本发明实施例中利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁,以锁住同源查询请求中剩余的查询请求,从而防止多次获取相同的查询数据,造成资源浪费。
60.详细地,所述从所述查询请求中筛选出来源相同的查询请求,得到同源查询请求,包括:
61.解析所述查询请求,得到所述查询请求相对应的地址索引标签;
62.从所述地址索引标签中提取所述查询请求的ip地址;
63.从所述查询请求中挑选ip地址相同的查询请求,得到同源查询请求。
64.进一步地,所述解析所述查询请求,得到所述查询请求相对应的地址索引标签,包括:
65.利用预设的服务连接器对所述查询请求进行解析,得到所述查询请求的请求头;
66.提取所述请求头中的统一资源定位符,并对所述统一资源定位符进行翻译,得到所述查询请求相对应的地址索引标签。
67.本发明实施例中,所述统一资源定位符可以是所述用户的网络地址。所述地址索引标签可以是所述查询请求对应的网络地址的索引。
68.s3、从所述查询请求中筛选出来源不相同的查询请求,得到异源查询请求,提取所
述异源查询请求中的待查询标签。
69.本发明实施例中,所述异源查询请求是指来自不同ip地址的查询请求,即多个ip地址在所述预设时间段内发送的查询请求,例如,在微信界面,多名用户在同一时间段内想要获取同一篇微信文章的查询请求。
70.本发明实施例中,所述待查询数据标签可以是所述查询请求对应的查询数据的索引。例如,用户的查询请求对应的查询数据是一篇文章,则所述待查询数据标签可以是所述文章的id、或者题目等能标识所述查询数据的字符。
71.本发明实施例中,所述从所述查询请求中筛选出来源不相同的查询请求,得到异源查询请求,包括:
72.解析所述查询请求,得到所述查询请求相对应的地址索引标签;
73.从所述地址索引标签中提取所述查询请求的ip地址;
74.从所述查询请求中挑选ip地址不同的查询请求,得到异源查询请求。
75.s4、判断本地缓存中是否存在与所述待查询数据标签对应的查询数据。
76.本发明实施例中,所述查询数据即用户需要的数据,一般存储于本地缓存及后台数据库中。其中,所述本地缓存中的数据一般为期限限制数据,即存储一段时间之后自动删除的数据。
77.详细地,所述判断本地缓存中是否存在与所述待查询数据标签对应的查询数据,包括:
78.提取所述待查询数据标签中的索引编码;
79.根据所述索引编码,查询所述本地缓存是否含有与所述索引编码对应的查询数据;
80.当所述本地缓存中存在与所述待查询数据标签对应的查询数据时,则进入s5、将所述待查询数据标签对应的所述查询请求发送至本地缓存。
81.本发明实施例中,当所述本地缓存存在与所述待查询数据标签对应的查询数据时,可以直接从所述本地缓存中获取对应的查询数据,因此,将所述待查询数据标签对应的所有查询请求发送至本地缓存。
82.当所述本地缓存中不存在与所述待查询数据标签对应的查询数据时,则进入s6、从所述待查询数据标签中筛选出相同待查询数据标签及不同待查询数据标签。
83.本发明实施例中,将获取相同查询数据的查询请求对应的待查询数据标签作为相同待查询数据标签,以及将获取不同查询数据的查询请求对应的待查询数据标签作为不同待查询数据标签。
84.本发明实施例中,当所述本地缓存中不存在与所述待查询数据标签对应的查询数据时,则表明所述查询请求需要从后台数据库中获取查询数据,为了防止出现缓存击穿,需要对所述查询请求进行分类,从而减少后台数据库的压力降低了缓存击穿现象出现的可能性。
85.s7、根据所述相同待查询数据标签对应的查询请求的接收时间,将所述相同待查询数据标签对应的查询请求中的第一个查询请求发送至后台数据库,并利用预设的缓存刷新锁对剩余的相同待查询数据标签对应的查询请求进行加锁。
86.本发明实施例中,所述缓存刷新锁的作用是在本地缓存中锁住剩余的相同待查询
数据标签对应的查询请求,以防止后台数据库同时接收大量获取同一查询数据的查询请求,从而造成缓存击穿。
87.本发明实施例中,所述后台数据库可以将读取到的数据写入所述本地缓存中,从而让剩余的相同待查询数据标签对应的查询请求可以直接从本地缓存中获取相应查询数据,防止了缓存击穿现象的发生,降低了后台数据库的压力。
88.详细地,所述s7包括:
89.获取所述查询请求的时间戳,根据所述时间戳从所述相同待查询数据标签对应的查询请求中选择第一查询请求,并利用预设的缓存刷新锁将所述相同待查询数据标签对应的查询请求中除第一查询请求的其余查询请求进行加锁,将所述第一查询请求发送至所述后台数据库进行读取操作;
90.将从所述后台数据库读取得到的查询数据写入本地缓存中;
91.将所述相同待查询数据标签对应的查询请求中除第一查询请求的其余查询请求发送到所述本地缓存中。
92.s8、将所述不同待查询数据标签对应的查询请求放入预设的消息队列中,根据所述消息队列,将所述不同待查询数据对应的查询请求发送至本地数据库。
93.本发明实施例中,所述消息队列是用来异步处理不同待查询数据标签对应的查询请求。由于异步处理的原因,有效地减少了所述后台数据库读取数据的压力,从而降低了缓存击穿现象的发生。
94.详细地,所述根据所述消息队列,将所述不同待查询数据标签对应的查询请求发送至后台数据库中进行读取操作,包括:
95.解析所述查询请求,得到所述不同待查询数据标签对应的查询请求对应的时间戳;
96.根据所述时间戳,将所述不同待查询数据标签对应的查询请求依次发送至所述后台数据库中,并时刻监督所述后台数据库中的查询请求是否超过预设阈值;
97.当所述后台数据库中的查询请求超过预设阈值时,停止从所述消息队列发送查询请求至所述后台数据库,直至所述后台数据库中读取查询数据的查询请求再次小于所述预设阈值。
98.本发明实施例提出的防缓存击穿方法首先通过对来源相同的查询请求进行加锁处理,从而限制用户短时间进行大量操作,减少了资源占用以及重复请求带来的后端服务压力;其次通过对高并发情况下的查询请求进行加锁处理,减少了重复请求带来的数据库压力,从而防止了数据库压力过大造成缓存击穿;最后,利用消息队列对高并发且不相同的查询请求进行异步处理,减少了数据库的压力,防止了数据库阻塞。
99.如图2所示,是本发明防缓存击穿装置的功能模块图。
100.本发明所述防缓存击穿装置100可以安装于电子设备中。根据实现的功能,所述防缓存击穿装置可以包括查询请求接收模块101、同源查询请求处理模块102及异源查询请求处理模块103,本发所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
101.在本实施例中,关于各模块/单元的功能如下:
102.所述查询请求接收模块101用于预设时间段内接收到超过预设数量的查询请求
时,并获取所述查询请求的来源;
103.本发明实施例中,所述预设时间段可以是,例如5s;以及所述预设数量可以根据后台数据库所能承受的最大访问量进行设定,如20条。
104.进一步地,所述查询请求可以是用户发送的想要从数据库中获取相关数据的请求动作,例如,在qq消息界面,用户通过拖拽页面往下滑动,可以获取待阅读的消息数量。
105.本发明实施例中,所述查询请求的来源是指发送所述查询请求的ip地址。
106.所述同源查询请求处理模块102,用于从所述查询请求中筛选出来源相同的查询请求,得到同源查询请求,并按照所述查询请求的接收时间,从所述同源查询请求中选择第一个查询请求发送至本地缓存,并利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁。
107.本发明实施例中,所述同源查询请求是指来自同一ip地址的查询请求,即同一个ip地址在预设时间段内连续发送的查询请求。例如,在qq消息界面,多次拖拽页面往下滑动以获取待阅读的消息数量。本发明实施例按照所述查询请求的接收时间,从所述同源查询请求中选择第一个查询请求发送至本地缓存中,并利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁。
108.应该了解,在所述预设时间内,如5s内,来自同一个ip地址的查询请求,通常情况下属于相同的查询请求多次发送,因此,为了减少本地缓存及后台数据库的压力,本发明实施例只从所述同源查询请求中选择第一个查询请求发送至本地缓存中,进一步地,本发明实施例中利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁,以锁住同源查询请求中剩余的查询请求,从而防止多次获取相同的查询数据,造成资源浪费。
109.详细地,所述从所述查询请求中筛选出来源相同的查询请求,得到同源查询请求,包括:
110.解析所述查询请求,得到所述查询请求相对应的地址索引标签;
111.从所述地址索引标签中提取所述查询请求的ip地址;
112.从所述查询请求中挑选ip地址相同的查询请求,得到同源查询请求。
113.进一步地,所述解析所述查询请求,得到所述查询请求相对应的地址索引标签,包括:
114.利用预设的服务连接器对所述查询请求进行解析,得到所述查询请求的请求头;
115.提取所述请求头中的统一资源定位符,并对所述统一资源定位符进行翻译,得到所述查询请求相对应的地址索引标签。
116.本发明实施例中,所述统一资源定位符可以是所述用户的网络地址。所述地址索引标签可以是所述查询请求对应的网络地址的索引。
117.所述异源查询请求处理模块103用于从所述查询请求中筛选出来源不相同的查询请求,得到异源查询请求,提取所述异源查询请求中的待查询标签,在本地缓存中存在与所述待查询数据标签对应的查询数据时,将所述待查询数据标签对应的所述查询请求发送至本地缓存,在所述本地缓存中不存在与所述待查询数据标签对应的查询数据时,从所述待查询数据标签中筛选出相同待查询数据标签及不同待查询数据标签,根据所述相同待查询数据标签对应的查询请求的接收时间,将所述相同待查询数据标签对应的查询请求中的第一个查询请求发送至后台数据库,并利用预设的缓存刷新锁对剩余的相同待查询数据标签
对应的查询请求进行加锁,及将所述不同待查询数据标签对应的查询请求放入预设的消息队列中,根据所述消息队列,将所述不同待查询数据标签对应的查询请求发送至后台数据库。
118.本发明实施例中,所述异源查询请求是指来自不同ip地址的查询请求,即多个ip地址在所述预设时间段内发送的查询请求,例如,在微信界面,多名用户在同一时间段内想要获取同一篇微信文章的查询请求。
119.本发明实施例中,所述待查询数据标签可以是所述查询请求对应的查询数据的索引。例如,用户的查询请求对应的查询数据是一篇文章,则所述待查询数据标签可以是所述文章的id、或者题目等能标识所述查询数据的字符。
120.本发明实施例中,所述从所述查询请求中筛选出来源不相同的查询请求,得到异源查询请求,包括:
121.解析所述查询请求,得到所述查询请求相对应的地址索引标签;
122.从所述地址索引标签中提取所述查询请求的ip地址;
123.从所述查询请求中挑选ip地址不同的查询请求,得到异源查询请求。
124.本发明实施例中,所述查询数据即用户需要的数据,一般存储于本地缓存及后台数据库中。其中,所述本地缓存中的数据一般为期限限制数据,即存储一段时间之后自动删除的数据。
125.详细地,所述判断本地缓存中是否存在与所述待查询数据标签对应的查询数据,包括:
126.提取所述待查询数据标签中的索引编码;
127.根据所述索引编码,查询所述本地缓存是否含有与所述索引编码对应的查询数据;
128.当所述本地缓存中存在与所述待查询数据标签对应的查询数据时,则将所述待查询数据标签对应的所述查询请求发送至本地缓存。
129.本发明实施例中,当所述本地缓存存在与所述待查询数据标签对应的查询数据时,可以直接从所述本地缓存中获取对应的查询数据,因此,将所述待查询数据标签对应的所有查询请求发送至本地缓存。
130.当所述本地缓存中不存在与所述待查询数据标签对应的查询数据时,则从所述待查询数据标签中筛选出相同待查询数据标签及不同待查询数据标签。
131.本发明实施例中,将获取相同查询数据的查询请求对应的待查询数据标签作为相同待查询数据标签,以及将获取不同查询数据的查询请求对应的待查询数据标签作为不同待查询数据标签。
132.本发明实施例中,当所述本地缓存中不存在与所述待查询数据标签对应的查询数据时,则表明所述查询请求需要从后台数据库中获取查询数据,为了防止出现缓存击穿,需要对所述查询请求进行分类,从而减少后台数据库的压力降低了缓存击穿现象出现的可能性。
133.本发明实施例中,所述缓存刷新锁的作用是在本地缓存中锁住剩余的相同待查询数据标签对应的查询请求,以防止后台数据库同时接收大量获取同一查询数据的查询请求,从而造成缓存击穿。
134.本发明实施例中,所述后台数据库可以将读取到的数据写入所述本地缓存中,从而让剩余的相同待查询数据标签对应的查询请求可以直接从本地缓存中获取相应查询数据,防止了缓存击穿现象的发生,降低了后台数据库的压力。
135.详细地,所述根据所述相同待查询数据标签对应的查询请求的接收时间,将所述相同待查询数据标签对应的查询请求中的第一个查询请求发送至后台数据库,并利用预设的缓存刷新锁对剩余的相同待查询数据标签对应的查询请求进行加锁,包括:
136.获取所述查询请求的时间戳,根据所述时间戳从所述相同待查询数据标签对应的查询请求中选择第一查询请求,并利用预设的缓存刷新锁将所述相同待查询数据标签对应的查询请求中除第一查询请求的其余查询请求进行加锁,将所述第一查询请求发送至所述后台数据库进行读取操作;
137.将从所述后台数据库读取得到的查询数据写入本地缓存中;
138.将所述相同待查询数据标签对应的查询请求中除第一查询请求的其余查询请求发送到所述本地缓存中。
139.本发明实施例中,所述消息队列是用来异步处理不同待查询数据标签对应的查询请求。由于异步处理的原因,有效地减少了所述后台数据库读取数据的压力,从而降低了缓存击穿现象的发生。
140.详细地,所述根据所述消息队列,将所述不同待查询数据标签对应的查询请求发送至后台数据库中进行读取操作,包括:
141.解析所述查询请求,得到所述不同待查询数据标签对应的查询请求对应的时间戳;
142.根据所述时间戳,将所述不同待查询数据标签对应的查询请求依次发送至所述后台数据库中,并时刻监督所述后台数据库中的查询请求是否超过预设阈值;
143.当所述后台数据库中的查询请求超过预设阈值时,停止从所述消息队列发送查询请求至所述后台数据库,直至所述后台数据库中读取查询数据的查询请求再次小于所述预设阈值。
144.如图3所示,是本发明实现防缓存击穿方法的电子设备的结构示意图。
145.所述电子设备可以包括处理器10、存储器11、通信总线12和通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如防缓存击穿程序。
146.其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,所述存储器11还可以既包括电子设备的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备的应用软件及各类数据,例如防缓存击穿程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
147.所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者
多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(control unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如防缓存击穿程序等),以及调用存储在所述存储器11内的数据,以执行电子设备的各种功能和处理数据。
148.所述通信总线12可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述通信总线12总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
149.图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
150.例如,尽管未示出,所述电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。
151.可选地,所述通信接口13可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。
152.可选地,所述通信接口13还可以包括用户接口,用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organic light-emitting diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
153.应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
154.所述电子设备中的所述存储器11存储的防缓存击穿程序是多个计算机程序的组合,在所述处理器10中运行时,可以实现:
155.预设时间段内接收到超过预设数量的查询请求时,获取所述查询请求的来源;
156.从所述查询请求中筛选出来源相同的查询请求,得到同源查询请求,并按照所述查询请求的接收时间,从所述同源查询请求中选择第一个查询请求发送至本地缓存,并利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁;
157.从所述查询请求中筛选出来源不相同的查询请求,得到异源查询请求,提取所述异源查询请求中的待查询标签;
158.判断本地缓存中是否存在与所述待查询数据标签对应的查询数据;
159.若所述本地缓存中存在与所述待查询数据标签对应的查询数据,则将所述待查询数据标签对应的所述查询请求发送至本地缓存;
160.若所述本地缓存中不存在与所述待查询数据标签对应的查询数据,则从所述待查询数据标签中筛选出相同待查询数据标签及不同待查询数据标签;
161.根据所述相同待查询数据标签对应的查询请求的接收时间,将所述相同待查询数据标签对应的查询请求中的第一个查询请求发送至后台数据库,并利用预设的缓存刷新锁对剩余的相同待查询数据标签对应的查询请求进行加锁;
162.将所述不同待查询数据标签对应的查询请求放入预设的消息队列中,根据所述消息队列,将所述不同待查询数据标签对应的查询请求发送至后台数据库。
163.具体地,所述处理器10对上述计算机程序的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
164.进一步地,所述电子设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。所述计算机可读介质可以是非易失性的,也可以是易失性的。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)。
165.本发明实施例还可以提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:
166.预设时间段内接收到超过预设数量的查询请求时,获取所述查询请求的来源;
167.从所述查询请求中筛选出来源相同的查询请求,得到同源查询请求,并按照所述查询请求的接收时间,从所述同源查询请求中选择第一个查询请求发送至本地缓存,并利用预设的防重放锁对所述同源查询请求中剩余的查询请求进行加锁;
168.从所述查询请求中筛选出来源不相同的查询请求,得到异源查询请求,提取所述异源查询请求中的待查询标签;
169.判断本地缓存中是否存在与所述待查询数据标签对应的查询数据;
170.若所述本地缓存中存在与所述待查询数据标签对应的查询数据,则将所述待查询数据标签对应的所述查询请求发送至本地缓存;
171.若所述本地缓存中不存在与所述待查询数据标签对应的查询数据,则从所述待查询数据标签中筛选出相同待查询数据标签及不同待查询数据标签;
172.根据所述相同待查询数据标签对应的查询请求的接收时间,将所述相同待查询数据标签对应的查询请求中的第一个查询请求发送至后台数据库,并利用预设的缓存刷新锁对剩余的相同待查询数据标签对应的查询请求进行加锁;
173.将所述不同待查询数据标签对应的查询请求放入预设的消息队列中,根据所述消息队列,将所述不同待查询数据标签对应的查询请求发送至后台数据库。
174.进一步地,所述计算机可用存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
175.在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
176.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
177.另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
178.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
179.因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
180.本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
181.此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
182.最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献