数据缓存方法、数据处理方法、系统、设备及存储介质与流程

文档序号:31708791发布日期:2022-10-01 13:44阅读:68来源:国知局
数据缓存方法、数据处理方法、系统、设备及存储介质与流程

1.本发明涉及互联网技术领域,更具体地说,它涉及一种数据缓存方法、数据处理方法、系统、设备及存储介质。


背景技术:

2.在当今的互联网时代,信息的传播是非常迅速的,比如一些热点新闻会在互联网中快速传播。
3.现有的互联网架构都会对数据进行分片,面对这种读多写少的场景,服务端对数据的大量访问会集中在某一服务器上。由于流量的过度集中很容易就会超过缓存极限,就会导致缓存崩溃。当缓存崩溃后,此时请求就会去到数据库,由于数据库本身性能比较脆弱,在面临大量请求时很容易出现雪崩现象,严重影响系统的稳定性和高可用性。


技术实现要素:

4.针对现有技术存在的不足,本发明的目的在于提供一种数据缓存方法、数据处理方法、系统、设备及存储介质,具有缓解redis数据库的压力,提高系统的并发能力和稳定性的功能优点。
5.本发明的上述技术目的是通过以下技术方案得以实现的:
6.第一方面,本技术提供了一种数据缓存方法,包括:
7.获取请求数据,所述请求数据是针对应用的任一用户请求所采集到的用户请求数据,其中,所述请求数据包括:关键字;
8.获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度;
9.根据所有所述关键字的热度对所有结果数据进行排序确定至少一热点数据,所述结果数据是存储在redis数据库中的与关键字具有映射关系的数据;
10.将所有所述热点数据同步到所述应用的本地缓存形成本地第一缓存;
11.将所述redis数据库中的所有结果数据读取到所述应用的本地缓存形成本地第二缓存。
12.可选的,所述用户请求数据的采集方法包括:
13.在所述用户请求触发对所述应用中关键函数的调用情况下,执行预先添加在所述关键函数的调用处的数据采集代码,以采集所述用户请求数据,其中,所述数据采集代码是基于切面编程aop进行添加的。
14.可选的,所述获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度,包括:
15.采用流式计算方式统计所述统计周期内的各个关键字的请求次数;
16.将各个所述关键字的请求次数作为该各个关键字的热度。
17.可选的,所述根据所有所述关键字的热度对所有结果数据进行排序确定至少一热
点数据,包括:
18.根据所有所述关键字的热度的高低对所有结果数据进行排序得到有序集合;
19.选取所述有序集合中的排序靠前的预设数量的结果数据确定至少一热点数据。
20.可选的,所述本地第二缓存为采用lru替换算法的缓存。
21.第二方面,本技术还提供了一种基于上述的数据缓存方法的数据处理方法,包括:
22.接收所述用户请求;
23.判断所述本地第一缓存中是否存储有响应所述用户请求的数据;
24.若是,则从所述本地第一缓存中获取对应的数据进行响应;
25.若否,则判断所述本地第二缓存中是否存储有响应所述用户请求的数据,若是,则从所述本地第二缓存中获取对应的数据进行响应,若否,则从所述redis数据库中获取对应的数据进行响应。
26.可选的,在所述从所述redis数据库中获取对应的数据进行响应后,还包括:
27.将从所述redis数据库中获取的对应的数据缓存到本地第二缓存中。
28.第三方面,本技术提供了一种数据缓存系统,包括:
29.第一获取模块,用于获取请求数据,所述请求数据是针对应用的任一用户请求所采集到的用户请求数据,其中,所述请求数据包括:关键字;
30.第二获取模块,用于获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度;
31.热度排序模块,用于根据所有所述关键字的热度对所有结果数据进行排序确定至少一热点数据,所述结果数据是存储在redis数据库中的与关键字具有映射关系的数据;
32.第一缓存模块,用于将所有所述热点数据同步到所述应用的本地缓存形成本地第一缓存;
33.第二缓存模块,用于将所述redis数据库中的所有结果数据读取到所述应用的本地缓存形成本地第二缓存。
34.第四方面,本技术提供了一种数据处理系统,包括:
35.接收模块,用于接收所述用户请求;
36.判断模块,用于判断所述本地第一缓存中是否存储有响应所述用户请求的数据;若是,则从所述本地第一缓存中获取对应的数据进行响应;若否,则判断所述本地第二缓存中是否存储有响应所述用户请求的数据,若是,则从所述本地第二缓存中获取对应的数据进行响应,若否,则从所述redis数据库中获取对应的数据进行响应。
37.第五方面,本技术提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述数据缓存方法的步骤。
38.第六方面,本技术又提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述数据处理方法的步骤。
39.第七方面,本技术提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据缓存方法的步骤。
40.第八方面,本技术又提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。
41.综上所述,本发明具有以下有益效果:将redis数据库中的热点数据缓存到本地存
储以形成本地第一缓存,将redis数据库中的数据也读取到本地存储以形成本地第二缓存,在有用户请求的情况下,对于热点数据可以直接从本地第一缓存中获取,非热点数据可以先从本地第二缓存中查找,在本地第二缓存中没有响应该用户请求的数据时,才访问redis数据库获得响应用户请求的数据,大大缓解了redis数据库的压力,提高了系统的并发能力和稳定性。
附图说明
42.图1是本发明提供的数据缓存方法的流程示意图;
43.图2是本发明提供的数据处理方法的流程示意图;
44.图3是本发明提供的数据缓存系统的结构框图;
45.图4是本发明实施例中计算机设备的内部结构图。
具体实施方式
46.为使本发明的目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。附图中给出了本发明的若干实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。
47.在本发明中,除非另有明确的规定和限定,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
48.下面结合附图和实施例,对本发明进行详细描述。
49.本发明提供了一种数据缓存方法,如图1所示,包括:
50.步骤100、获取请求数据,所述请求数据是针对应用的任一用户请求所采集到的用户请求数据,其中,所述请求数据包括:关键字;在实际应用中,应用在用户终端上运行,用户终端可以是手机、计算机、ipad等具有显示屏的且支持应用程序运行的各种电子设备,请求数据可以是预先从用户终端上采集,也可以是实时从用户终端上采集的。
51.步骤200、获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度;所述统计周期可以设定为一个小时、一天或一周等,在该设定的统计周期内统计各个关键字的请求次数,也就是得到了各个关键字的访问频率,从而得到在该设定的统计周期内的所有关键字的请求次数,在本技术中将各个关键字的请求次数作为各个关键字在该设定的统计周期内的热度,从而计算得到了所有关键字在该设定的统计周期内的热度。
52.步骤300、根据所有所述关键字的热度对所有结果数据进行排序确定至少一热点数据,所述结果数据是存储在redis(remote dictionary server,非常流行的完全开源的key-value型非关系型数据库)数据库中的与关键字具有映射关系的数据;步骤400、将所有所述热点数据同步到所述应用的本地缓存形成本地第一缓存;
53.步骤500、将所述redis数据库中的所有结果数据读取到所述应用的本地缓存形成本地第二缓存。
54.在实际应用中,redis数据库中存储的部分数据为高频访问的热点数据,但是,由
于数据库本身性能比较脆弱,在面临大量访问请求时很容易出现雪崩现象,且正对这些高频访问的热点数据,对redis的性能消耗通常较大。因此,将redis数据库中的热点数据缓存到本地存储以形成本地第一缓存,将redis数据库中的数据也读取到本地存储以形成本地第二缓存,在有访问请求的情况下,能先在本地第一缓存中查找是否有响应该访问请求的数据,若有,则获取该数据响应该访问请求,若没有,则在本地第二缓存中,查找是否有响应该访问请求的数据,若有,则获取该数据响应该访问请求,若没有,再从redis数据库中查找响应该访问请求的数据,并获取该数据响应该访问请求,然后将该数据读取到本地第二缓存。
55.另外,本地第二缓存为采用lru(least recently used)替换算法的缓存,在有数据从redis数据库中读取到本地第二缓存的情况下,本地第二缓存则根据lru替换算法将最近最少使用的数据替换成从redis数据库中读取的数据。通过本技术的缓存方法,在有用户请求的情况下,使得并非所有的响应数据均通过访问redis数据库获得,对于热点数据可以直接从本地第一缓存中获取,非热点数据可以先从本地第二缓存中查找,在本地第二缓存中没有响应该用户请求的数据时,才访问redis数据库获得响应用户请求的数据,大大缓解了redis数据库的压力,提高了系统的并发能力和稳定性。
56.进一步地,所述用户请求数据的采集方法包括:
57.在所述用户请求触发对所述应用中关键函数的调用情况下,执行预先添加在所述关键函数的调用处的数据采集代码,以采集所述用户请求数据,其中,所述数据采集代码是基于面向切面编程aop(aspect oriented programming)进行添加的,aop是通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术,其中,所述关键函数通常是指对底层事件进行监听的函数,底层事件包括但不限于鼠标点击、触摸、滑动、移动等事件。
58.在实际应用中,很多应用都采用spring boot架构搭建,在访问redis时使用的都是redistemplate模版类,本技术为了减少对系统的侵入,做到无感接入,通过spring框架中的aop能在获取用户请求数据上添加切面操作,也就是在所述关键函数的调用处预先添加数据采集代码,以实现对用户请求数据的采集。
59.进一步地,所述获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度,包括:
60.采用流式计算方式统计所述统计周期内的各个关键字的请求次数;流式计算可以很好地对大规模流动数据在不断变化的运动过程中实时地进行分析
61.将各个所述关键字的请求次数作为该各个关键字的热度。
62.进一步地,所述根据所有所述关键字的热度对所有结果数据进行排序确定至少一热点数据,包括:
63.根据所有所述关键字的热度的高低对所有结果数据进行排序得到有序集合;另外,在不同关键字的热度相同的情况下,则根据该不同关键字的最近请求时间确定该不同关键字的热度,关键字的最近请求时间越晚则热度越高。
64.选取所述有序集合中的排序靠前的预设数量的结果数据确定至少一热点数据。所述预设数量可为5个或10个等,具体可根据本地第一缓存的缓存容量确定,在经过一统计周期后,若有序集合中的排序改变,使得热点数据产生变化和更新,则将更新后的热点数据同步到本地第一缓存中。
65.本发明的数据缓存方法,将redis数据库中的热点数据缓存到本地存储以形成本地第一缓存,将redis数据库中的数据也读取到本地存储以形成本地第二缓存,在有用户请求的情况下,对于热点数据可以直接从本地第一缓存中获取,非热点数据可以先从本地第二缓存中查找,在本地第二缓存中没有响应该用户请求的数据时,才访问redis数据库获得响应用户请求的数据,大大缓解了redis数据库的压力,提高了系统的并发能力和稳定性。
66.本发明还提供了一种数据处理方法,如图2所示,包括:
67.步骤10、接收所述用户请求;
68.步骤20、判断所述本地第一缓存中是否存储有响应所述用户请求的数据,若是,则执行步骤30,若否则执行步骤40;
69.步骤30、从所述本地第一缓存中获取对应的数据进行响应;
70.步骤40、判断所述本地第二缓存中是否存储有响应所述用户请求的数据,若是,则从所述本地第二缓存中获取对应的数据进行响应,若否,则从所述redis数据库中获取对应的数据进行响应。
71.进一步地,在所述从所述redis数据库中获取对应的数据进行响应后,还包括:
72.将从所述redis数据库中获取的对应的数据缓存到本地第二缓存中。
73.本技术中的数据处理方法基于本技术的数据缓存方法实现,用户请求是用户通过用户终端上的应用发出,主要也是为了与数据缓存方法配合,以减轻redis数据库的压力,减少对redis数据库的消耗,保证了系统的稳定性。
74.如图3所示,本发明还提供了一种数据缓存系统,包括:
75.第一获取模块1,用于获取请求数据,所述请求数据是针对应用的任一用户请求所采集到的用户请求数据,其中,所述请求数据包括:关键字;
76.第二获取模块2,用于获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度;
77.热度排序模块3,用于根据所有所述关键字的热度对所有结果数据进行排序确定至少一热点数据,所述结果数据是存储在redis数据库中的与关键字具有映射关系的数据;
78.第一缓存模块4,用于将所有所述热点数据同步到所述应用的本地缓存形成本地第一缓存;
79.第二缓存模块5,用于将所述redis数据库中的所有结果数据读取到所述应用的本地缓存形成本地第二缓存。
80.关于数据缓存系统的具体限定可以参见上文中对于数据缓存方法的限定,在此不再赘述。上述数据缓存系统的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
81.本发明还提供了一种数据处理系统,包括:
82.接收模块,用于接收所述用户请求;
83.判断模块,用于判断所述本地第一缓存中是否存储有响应所述用户请求的数据;若是,则从所述本地第一缓存中获取对应的数据进行响应;若否,则判断所述本地第二缓存中是否存储有响应所述用户请求的数据,若是,则从所述本地第二缓存中获取对应的数据进行响应,若否,则从所述redis数据库中获取对应的数据进行响应。
84.上述数据处理系统的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
85.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据缓存方法。
86.本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
87.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行计算机程序时实现以下步骤:
88.获取请求数据,所述请求数据是针对应用的任一用户请求所采集到的用户请求数据,其中,所述请求数据包括:关键字;
89.获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度;
90.根据所有所述关键字的热度对所有结果数据进行排序确定至少一热点数据,所述结果数据是存储在redis数据库中的与关键字具有映射关系的数据;
91.将所有所述热点数据同步到所述应用的本地缓存形成本地第一缓存;
92.将所述redis数据库中的所有结果数据读取到所述应用的本地缓存形成本地第二缓存。
93.在一个实施例中,所述用户请求数据的采集方法包括:
94.在所述用户请求触发对所述应用中关键函数的调用情况下,执行预先添加在所述关键函数的调用处的数据采集代码,以采集所述用户请求数据,其中,所述数据采集代码是基于切面编程aop进行添加的。
95.在一个实施例中,所述获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度,包括:
96.采用流式计算方式统计所述统计周期内的各个关键字的请求次数;
97.将各个所述关键字的请求次数作为该各个关键字的热度。
98.在一个实施例中,所述根据所有所述关键字的热度对所有结果数据进行排序确定至少一热点数据,包括:
99.根据所有所述关键字的热度的高低对所有结果数据进行排序得到有序集合;
100.选取所述有序集合中的排序靠前的预设数量的结果数据确定至少一热点数据。
101.在一个实施例中,所述本地第二缓存为采用lru替换算法的缓存。接收所述用户请求;
102.在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,所述存储器存
储有计算机程序,所述处理器执行计算机程序时实现以下步骤:
103.判断所述本地第一缓存中是否存储有响应所述用户请求的数据;
104.若是,则从所述本地第一缓存中获取对应的数据进行响应;
105.若否,则判断所述本地第二缓存中是否存储有响应所述用户请求的数据,若是,则从所述本地第二缓存中获取对应的数据进行响应,若否,则从所述redis数据库中获取对应的数据进行响应。
106.在一个实施例中,在所述从所述redis数据库中获取对应的数据进行响应后,还包括:
107.将从所述redis数据库中获取的对应的数据缓存到本地第二缓存中。
108.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
109.获取请求数据,所述请求数据是针对应用的任一用户请求所采集到的用户请求数据,其中,所述请求数据包括:关键字;
110.获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度;
111.根据所有所述关键字的热度对所有结果数据进行排序确定至少一热点数据,所述结果数据是存储在redis数据库中的与关键字具有映射关系的数据;
112.将所有所述热点数据同步到所述应用的本地缓存形成本地第一缓存;
113.将所述redis数据库中的所有结果数据读取到所述应用的本地缓存形成本地第二缓存。
114.在一个实施例中,所述用户请求数据的采集方法包括:
115.在所述用户请求触发对所述应用中关键函数的调用情况下,执行预先添加在所述关键函数的调用处的数据采集代码,以采集所述用户请求数据,其中,所述数据采集代码是基于切面编程aop进行添加的。
116.在一个实施例中,所述获取在统计周期内的各个关键字的请求次数,根据各个所述关键字的请求次数得到该各个关键字的热度,包括:
117.采用流式计算方式统计所述统计周期内的各个关键字的请求次数;
118.将各个所述关键字的请求次数作为该各个关键字的热度。
119.在一个实施例中,所述根据所有所述关键字的热度对所有结果数据进行排序确定至少一热点数据,包括:
120.根据所有所述关键字的热度的高低对所有结果数据进行排序得到有序集合;
121.选取所述有序集合中的排序靠前的预设数量的结果数据确定至少一热点数据。
122.在一个实施例中,所述本地第二缓存为采用lru替换算法的缓存。
123.在一个实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
124.接收所述用户请求;
125.判断所述本地第一缓存中是否存储有响应所述用户请求的数据;
126.若是,则从所述本地第一缓存中获取对应的数据进行响应;
127.若否,则判断所述本地第二缓存中是否存储有响应所述用户请求的数据,若是,则
从所述本地第二缓存中获取对应的数据进行响应,若否,则从所述redis数据库中获取对应的数据进行响应。
128.在一个实施例中,在所述从所述redis数据库中获取对应的数据进行响应后,还包括:
129.将从所述redis数据库中获取的对应的数据缓存到本地第二缓存中。
130.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
131.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1