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

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

2021-12-17 21:42:00 来源:中国专利 TAG:


1.本发明涉及存储技术领域,特别是涉及一种数据缓存方法、系统、设备及存储介质。


背景技术:

2.长期以来,在计算机系统中一直存在着这样的矛盾:高速的处理器与相对高速的内存之间的矛盾,以及相对高速的内存与低速的硬盘之间的矛盾。由于处理器的处理速度远远高于内存读写速度,而内存读写速度又远高于硬盘,因此会导致大量的时间被浪费在等待读写数据上。为了缓解这种矛盾,目前会在处理器内部集成高速缓存以在一定程度上调节处理器与内存之间的速度矛盾,同样的,在一些比较高端的存储设备中,也会内置高速缓存,用于缓解内存与硬盘之间的速度矛盾。
3.在web系统中,同样存在着这样的矛盾。使得在高并发场景下,数据库往往会成为性能瓶颈,因为其直接存储在硬盘上,对数据库的读写意味着对硬盘的读写,而cpu和内存的速度要远远高于硬盘读写速度,当大量的请求到达服务器时,cpu可以很快地将请求处理完毕,但访问硬盘以读取数据的速度就较慢,导致数据库性能急剧下降,严重的情况下可能直接宕机。因此,通常会设计缓存系统来过滤和拦截请求,缓存层位于内存中,内存的读写速度远远快于硬盘,如果缓存中存在数据,直接从缓存返回数据,如果不存在,才会去访问数据库,使得数据库的压力被缓存系统分担了一大部分。但是缓存空间远小于硬盘的存储空间,因此,这样的方式只能在一定程度上提高响应速度。
4.综上所述,如何进一步地提高响应速度,是目前本领域技术人员急需解决的技术问题。


技术实现要素:

5.本发明的目的是提供一种数据缓存方法、系统、设备及存储介质,以进一步地提高响应速度。
6.为解决上述技术问题,本发明提供如下技术方案:
7.一种数据缓存方法,包括:
8.根据接收到的请求,生成携带有任务类型和任务数据的任务;
9.判断所述任务类型是否为数据检索;
10.如果是,则将所述任务数据作为检索索引,并判断缓存中是否存在对应于所述检索索引的检索结果;
11.如果缓存中存在,则通过对缓存中的数据的解压缩,得到对应于所述检索索引的检索结果,并进行反馈;
12.如果缓存中不存在,则判断数据库中是否存在对应于所述检索索引的检索结果;
13.如果数据库中存在,则将所述数据库中的对应于所述检索索引的检索结果进行反馈。
14.优选的,在判断出数据库中存在对应于所述检索索引的检索结果之后,还包括:
15.将所述数据库中的对应于所述检索索引的检索结果压缩并且存储至缓存中;
16.所述数据缓存方法还包括:
17.通过预设的驱逐策略淘汰缓存中存储的压缩数据。
18.优选的,所述通过预设的驱逐策略淘汰缓存中存储的压缩数据,包括:
19.通过预设的lru策略淘汰缓存中存储的压缩数据。
20.优选的,还包括:
21.当判断出所述任务类型为数据更新时,将所述任务数据作为更新数据并对所述数据库执行数据更新,并且将所述更新数据压缩并且存储至缓存中;
22.当判断出所述任务类型为数据插入时,将所述任务数据作为插入数据并对所述数据库执行数据插入,并且将所述插入数据压缩并且存储至缓存中;
23.当判断出所述任务类型为数据删除时,基于所述任务数据确定出删除对象并对所述数据库执行数据删除。
24.优选的,将所述数据库中的对应于所述检索索引的检索结果进行反馈,包括:
25.通过第一线程将所述数据库中的对应于所述检索索引的检索结果进行反馈
26.将所述数据库中的对应于所述检索索引的检索结果压缩并且存储至缓存中,包括:
27.通过第二线程将所述数据库中的对应于所述检索索引的检索结果压缩并且存储至缓存中。
28.优选的,在判断出数据库中不存在对应于所述检索索引的检索结果之后,还包括;
29.反馈表示检索失败的提示信息。
30.优选的,在通过对缓存中的数据的解压缩,得到对应于所述检索索引的检索结果之后,还包括:
31.按照一致性校验规则验证解压缩后得到的所述检索结果是否正确;
32.如果是,则将所述检索结果进行反馈;
33.如果否,则重新执行通过对缓存中的数据的解压缩,得到对应于所述检索索引的检索结果的操作。
34.一种数据缓存系统,包括:
35.任务接收单元,用于根据接收到的请求,生成携带有任务类型和任务数据的任务;
36.第一判断单元,用于判断所述任务类型是否为数据检索;
37.如果是,则执行第二判断单元,用于将所述任务数据作为检索索引,并判断缓存中是否存在对应于所述检索索引的检索结果;
38.如果缓存中存在,则执行第一反馈单元,用于通过对缓存中的数据的解压缩,得到对应于所述检索索引的检索结果,并进行反馈;
39.如果缓存中不存在,则执行第三判断单元,用于判断数据库中是否存在对应于所述检索索引的检索结果;
40.如果数据库中存在,则执行第二反馈单元,用于将所述数据库中的对应于所述检索索引的检索结果进行反馈。
41.一种数据缓存设备,包括:
42.存储器,用于存储计算机程序;
43.处理器,用于执行所述计算机程序以实现如上述任一项所述的数据缓存方法的步骤。
44.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的数据缓存方法的步骤
45.应用本发明实施例所提供的技术方案,当任务类型为数据检索,并且判断出缓存中存在对应于检索索引的检索结果之后,可以直接从缓存中得到对应于检索索引的检索结果,并进行反馈,即相较于将数据库中的对应于检索索引的检索结果进行反馈,响应速度更快。当然,如果缓存中不存在,则会将数据库中的对应于检索索引的检索结果进行反馈。并且,本技术的方案中,是通过对缓存中的数据的解压缩,得到对应于检索索引的检索结果,也就是说,缓存中的数据是压缩保存的,这样可以有效地节约缓存空间,即使得缓存中可以存储更多的数据,从而提高系统整体的响应速度。由于缓存中的数据是压缩保存的,因此,进行数据的解压缩存在一定的耗时,但是如本技术上文的描述可知,处理器的处理速度远远高于内存读写速度,而内存读写速度又远高于硬盘,因此,进行数据的解压缩所带来的耗时的增长很短,但是能够节约大量的缓存空间,系统的整体响应速度可以有效地提升。
附图说明
46.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
47.图1为本发明中一种数据缓存方法的实施流程图;
48.图2为本发明中一种数据缓存系统的结构示意图。
具体实施方式
49.本发明的核心是提供一种数据缓存方法,系统的整体响应速度可以有效地提升。
50.为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
51.请参考图1,图1为本发明中一种数据缓存方法的实施流程图,该数据缓存方法可以包括以下步骤:
52.步骤s101:根据接收到的请求,生成携带有任务类型和任务数据的任务。
53.具体的,可以由任务接收单元接收客户端发起的请求,进而将请求封装成任务,封装后所得到的任务中至少需要携带有任务类型和任务数据,当然,在其他具体实施方式中,封装后所得到的任务中还可以携带有其他信息,例如还还可以携带有任务的id,任务的发起方信息等等,可以根据实际需要进行设定和调整。
54.任务类型通常有数据检索,数据更新,数据插入以及数据删除这4种。任务数据则表示的是本次任务具体涉及到的数据内容。例如当任务类型为数据检索时,任务数据便是
检索索引,即检索的key,任务类型为数据删除时,任务数据便是删除的key。当任务类型为数据更新或者数据插入时,任务数据中除了要有更新位置/插入位置的信息,还需要有待更新/待插入的数据。
55.步骤s102:判断任务类型是否为数据检索。如果是,则执行步骤s103。
56.任务接收单元可以将封装好的任务发送给任务调度模块,任务调度模块通过解析,便可以判断出接收到的任务的任务类型是否为数据检索。
57.步骤s103:将任务数据作为检索索引,并判断缓存中是否存在对应于检索索引的检索结果;如果缓存中存在,则执行步骤s104。
58.由于任务类型为数据检索,因此,可以将任务数据作为检索索引,即作为检索的key,判断缓存中是否存在对应于检索索引的检索结果,具体的,通常可以通过遍历的方式判断出缓存中是否存在对应于检索索引的检索结果。
59.步骤s104:通过对缓存中的数据的解压缩,得到对应于检索索引的检索结果,并进行反馈;如果缓存中不存在,则执行步骤s105。
60.如果缓存中存在对应于检索索引的检索结果,便可以无需访问数据库,直接基于缓存来实现反馈。
61.并且,本技术在缓存中存储的数据为压缩数据,因此,需要通过对缓存中的数据的解压缩,才能够得到对应于检索索引的检索结果,进而反馈给客户端。
62.进一步的,在本发明的一种具体实施方式中,为了保障解压缩后得到的数据的准确性,在步骤s104中描述的通过对缓存中的数据的解压缩,得到对应于检索索引的检索结果之后,还可以包括:
63.按照一致性校验规则验证解压缩后得到的检索结果是否正确;
64.如果是,则将检索结果进行反馈;
65.如果否,则重新执行通过对缓存中的数据的解压缩,得到对应于检索索引的检索结果的操作。
66.一致性校验规则具体选取的算法根据实际需要进行设定即可,例如通过简单的校验位来实现一致性校验。该种实施方式中,当一致性校验未通过时,说明加压缩过程可能出现了异常,因此会重新执行通过对缓存中的数据的解压缩,得到对应于检索索引的检索结果的操作。此外,在其他场合中,如果重复多次之后仍然异常,则可能是缓存中的数据损坏,则可以执行步骤s105,以从数据库中得到对应于检索索引的检索结果。
67.步骤s105:判断数据库中是否存在对应于检索索引的检索结果。如果数据库中存在,则执行步骤s106
68.当缓存中不存在对应于检索索引的检索结果时,便需要判断数据库中是否存在对应于检索索引的检索结果。
69.通常情况下,数据库中会存在对应于检索索引的检索结果,少部分情况下,数据库中不存在对应于检索索引的检索结果,可能是数据库中数据丢失导致的,也可能是客户端发送了错误的请求导致的。在本发明的一种具体实施方式中,在判断出数据库中不存在对应于检索索引的检索结果之后,还可以包括;反馈表示检索失败的提示信息,以提醒客户端注意到该情况。
70.步骤s106:将数据库中的对应于检索索引的检索结果进行反馈。
71.当判断出数据库中存在对应于检索索引的检索结果时,便可以将数据库中的对应于检索索引的检索结果进行反馈。
72.在本发明的一种具体实施方式中,在判断出数据库中存在对应于检索索引的检索结果之后,还可以包括:
73.将数据库中的对应于检索索引的检索结果压缩并且存储至缓存中;
74.数据缓存方法还包括:
75.通过预设的驱逐策略淘汰缓存中存储的压缩数据。
76.本技术的缓存中存储的数据,可以是固定的数据,也可以是变化的数据,即可以进行缓存的更新,当然,还可以选择将部分数据固定,其余进行更新。例如一种场合中,工作人员已知部分数据使用频率较高,因此将这部分数据压缩保存在缓存中,并且不会被驱逐策略淘汰,而缓存的剩余空间所存储的数据可以进行更新。
77.该种实施方式中,在判断出数据库中存在对应于检索索引的检索结果之后,说明对应于检索索引的检索结果近期被使用的概率较高,因此,会将数据库中的对应于检索索引的检索结果压缩并且存储至缓存中。
78.此外,在将数据压缩并存储在缓存中时,也可以进行一致性校验,即一致性校验通过之后,才将压缩数据存储至缓存中。
79.本技术的该种实施方式中,通过预设的驱逐策略淘汰缓存中存储的压缩数据,例如考虑到lru(least recently used,最近最少使用)策略较为成熟,应用广泛,通过预设的驱逐策略淘汰缓存中存储的压缩数据,可以具体为:通过预设的lru策略淘汰缓存中存储的压缩数据。采用lru策略淘汰缓存中存储的压缩数据时,是将最近,最少使用的数据进行淘汰。
80.预设的驱逐策略可以由缓存工具进行维护,例如选取caffeine cache作为缓存工具,维护一个守护线程daemon来监控缓存中的数据,当数据满足驱逐策略时,该守护线程便会将其从缓存中移除,以保障缓存的时效性和可用性。
81.当然,在其他场合中,可以根据实际需要采用其他类型的驱逐策略来淘汰缓存中存储的压缩数据,但可以理解的是,通常而言,数据被使用的频率越低,越长时间未被使用,则越应当被淘汰。
82.在本发明的一种具体实施方式中,还可以包括:
83.当判断出任务类型为数据更新时,将任务数据作为更新数据并对数据库执行数据更新,并且将更新数据压缩并且存储至缓存中;
84.当判断出任务类型为数据插入时,将任务数据作为插入数据并对数据库执行数据插入,并且将插入数据压缩并且存储至缓存中;
85.当判断出任务类型为数据删除时,基于任务数据确定出删除对象并对数据库执行数据删除。
86.该种实施方式中,当任务类型分别为数据更新,数据插入以及数据删除时,可以按照任务类型的不同,执行对应的操作。并且,对于数据更新和数据插入而言,对应的数据近期被使用的概率较高,该种实施方式会将更新数据压缩并且存储至缓存中,也会将插入数据压缩并且存储至缓存中。
87.此外,当判断出任务类型为数据删除时,除了基于任务数据确定出删除对象并对
数据库执行数据删除,在其他场合中,如果缓存中也存在该删除对象的压缩数据,则可以将缓存中的该删除对象的压缩数据进行删除。
88.在本发明的一种具体实施方式中,步骤s106可以具体包括:
89.通过第一线程将数据库中的对应于检索索引的检索结果进行反馈
90.将数据库中的对应于检索索引的检索结果压缩并且存储至缓存中,可以具体包括:
91.通过第二线程将数据库中的对应于检索索引的检索结果压缩并且存储至缓存中。
92.该种实施方式中,将数据库中的对应于检索索引的检索结果压缩并且存储至缓存中,是通过第二线程来执行的,并不会影响到第一线程将数据库中的对应于检索索引的检索结果进行反馈的操作,即对于缓存的更新采用的是异步更新的机制,压缩操作对于用户而言是无感知的,并不会延长响应耗时。
93.此外可以理解的是,在上述实施方式中,数据更新和数据插入也会涉及到更新缓存的操作,同样也可以由第二线程执行,即涉及到更新缓存的部分,均为异步执行,以提高系统的响应速度。
94.下面用一个简单的例子分析一下本技术的方案为整个缓存层带来的收益以及额外的开销。以压缩算法具体选取为lzo(lempel

ziv

oberhumer,无损压缩)算法为例,数据的压缩率为20%左右,即一个100kb的数据组,压缩完毕后约为80kb。假设系统设置的缓存大小为1000,且存入缓存的每个数据均为100kb。当然,实际上,一个普通的java对象可能只有几百字节,则该例子中压缩后的大小为0.8
×
105kb≈78.13mb,节约了19.53mb。lzo算法解压缩速率约为400mb/s,那么检索时长平均增长为100kb
÷
400mb/s≈0.2ms。也就是说,节约的空间提供了额外20%的内存逻辑容量,付出的代价仅为0.2毫秒的检索时长。
95.应用本发明实施例所提供的技术方案,当任务类型为数据检索,并且判断出缓存中存在对应于检索索引的检索结果之后,可以直接从缓存中得到对应于检索索引的检索结果,并进行反馈,即相较于将数据库中的对应于检索索引的检索结果进行反馈,响应速度更快。当然,如果缓存中不存在,则会将数据库中的对应于检索索引的检索结果进行反馈。并且,本技术的方案中,是通过对缓存中的数据的解压缩,得到对应于检索索引的检索结果,也就是说,缓存中的数据是压缩保存的,这样可以有效地节约缓存空间,即使得缓存中可以存储更多的数据,从而提高系统整体的响应速度。由于缓存中的数据是压缩保存的,因此,进行数据的解压缩存在一定的耗时,但是如本技术上文的描述可知,处理器的处理速度远远高于内存读写速度,而内存读写速度又远高于硬盘,因此,进行数据的解压缩所带来的耗时的增长很短,但是能够节约大量的缓存空间,系统的整体响应速度可以有效地提升。
96.相应于上面的方法实施例,本发明实施例还提供了一种数据缓存系统,可与上文相互对应参照。
97.参见图2所示,为本发明中一种数据缓存系统的结构示意图,包括:
98.任务接收单元201,用于根据接收到的请求,生成携带有任务类型和任务数据的任务;
99.第一判断单元202,用于判断任务类型是否为数据检索;
100.如果是,则执行第二判断单元203,用于将任务数据作为检索索引,并判断缓存中是否存在对应于检索索引的检索结果;
101.如果缓存中存在,则执行第一反馈单元204,用于通过对缓存中的数据的解压缩,得到对应于检索索引的检索结果,并进行反馈;
102.如果缓存中不存在,则执行第三判断单元205,用于判断数据库中是否存在对应于检索索引的检索结果;
103.如果数据库中存在,则执行第二反馈单元206,用于将数据库中的对应于检索索引的检索结果进行反馈。
104.在本发明的一种具体实施方式中,还包括:
105.缓存更新单元,用于在第三判断单元205判断出数据库中存在对应于检索索引的检索结果之后,将数据库中的对应于检索索引的检索结果压缩并且存储至缓存中;通过预设的驱逐策略淘汰缓存中存储的压缩数据。
106.在本发明的一种具体实施方式中,缓存更新单元通过预设的驱逐策略淘汰缓存中存储的压缩数据,具体为:
107.通过预设的lru策略淘汰缓存中存储的压缩数据。
108.在本发明的一种具体实施方式中,还包括:
109.第一执行单元,用于当判断出任务类型为数据更新时,将任务数据作为更新数据并对数据库执行数据更新,并且将更新数据压缩并且存储至缓存中;
110.第二执行单元,用于当判断出任务类型为数据插入时,将任务数据作为插入数据并对数据库执行数据插入,并且将插入数据压缩并且存储至缓存中;
111.第三执行单元,用于当判断出任务类型为数据删除时,基于任务数据确定出删除对象并对数据库执行数据删除。
112.在本发明的一种具体实施方式中,第二反馈单元206,具体用于:
113.通过第一线程将数据库中的对应于检索索引的检索结果进行反馈。
114.缓存更新单元将数据库中的对应于检索索引的检索结果压缩并且存储至缓存中,具体为:
115.缓存更新单元通过第二线程将数据库中的对应于检索索引的检索结果压缩并且存储至缓存中。
116.在本发明的一种具体实施方式中,还包括;
117.提示信息输出单元,用于在第三判断单元205判断出数据库中不存在对应于检索索引的检索结果之后,反馈表示检索失败的提示信息。
118.在本发明的一种具体实施方式中,还包括一致性校验单元,用于:
119.在第一反馈单元204通过对缓存中的数据的解压缩,得到对应于检索索引的检索结果之后,按照一致性校验规则验证解压缩后得到的检索结果是否正确;
120.如果是,则将检索结果进行反馈;
121.如果否,则重新执行通过对缓存中的数据的解压缩,得到对应于检索索引的检索结果的操作。
122.相应于上面的方法和系统实施例,本发明实施例还提供了一种数据缓存设备及计算机可读存储介质,可与上文相互对应参照。
123.该数据缓存设备可以包括:
124.存储器,用于存储计算机程序;
125.处理器,用于执行计算机程序以实现如上述任一实施例中的数据缓存方法的步骤。
126.该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例中的数据缓存方法的步骤。这里所说的计算机可读存储介质包括随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质。
127.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
128.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
129.本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
再多了解一些

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

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

相关文献