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

一种缓存缩容方法、装置、设备及存储介质与流程

2022-06-01 06:37:19 来源:中国专利 TAG:


1.本技术实施例涉及数据处理技术领域,尤其涉及一种缓存缩容方法、装置、设备及存储介质。


背景技术:

2.随着网络技术的发展,越来越多的用户加入到网络服务中,随之而来的是越来越多的用户数据的产生,为了应对大量数据的读写需求,经常使用分布式的缓存系统(例如redis、pika等存储系统)存储数据。
3.缓存系统通常使用键值对(key-value)的方式存储数据,缓存值以缓存列表的形式记录数据,在接收到对缓存键对应的缓存列表进行数据新增操作的请求时,会向缓存列表中新增对应的数据,而随着线上新增请求逐渐增多,缓存列表中的数据将会越来越多,缓存列表的无限增大会影响缓存系统的稳定性,影响缓存系统的正常工作。


技术实现要素:

4.本技术实施例提供一种缓存缩容方法、装置、设备及存储介质,以解决现有技术中缓存列表的无限增大影响缓存系统的稳定性,影响缓存系统的正常工作的技术问题,在保证线上服务满足高并发实时性及缓存系统稳定性的前提下,动态地调整缓存列表大小,减少由于缓存列表不断增大而导致缓存系统数据处理效率下降,或在大数据量的缓存列表下的增删查操作需要耗费大量计算资源的情况,有效缓解大数据量的缓存列表对缓存系统造成的性能问题。
5.在第一方面,本技术实施例提供了一种缓存缩容方法,包括:
6.按照设定时间间隔从第一集合中随机选取第一设定数量的缓存键,并将选取的缓存键转移到第二集合中,所述第一集合中的缓存键在对应的缓存列表进行新增操作时更新得到;
7.遍历所述第二集合中的缓存键,确定所述第二集合中的缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理;
8.清空所述第二集合中的缓存键。
9.在第二方面,本技术实施例提供了一种缓存缩容装置,包括缓存键抽选模块、缩容处理模块和缓存键清空模块,其中:
10.所述缓存键抽选模块,用于按照设定时间间隔从第一集合中随机选取第一设定数量的缓存键,并将选取的缓存键转移到第二集合中,所述第一集合中的缓存键在对应的缓存列表进行新增操作时更新得到;
11.所述缩容处理模块,用于遍历所述第二集合中的缓存键,确定所述第二集合中的缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理;
12.所述缓存键清空模块,用于清空所述第二集合中的缓存键。
13.在第三方面,本技术实施例提供了一种缓存缩容设备,包括:存储器以及一个或多个处理器;
14.所述存储器,用于存储一个或多个程序;
15.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的缓存缩容方法。
16.在第四方面,本技术实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的缓存缩容方法。
17.本技术实施例通过在对缓存列表进行新增操作时,将对应的缓存键更新到第一集合中,并按照设定的时间间隔从第一集合中随机选取第一设定数量的缓存键转移到第二集合中,并遍历加入到第二集合中的缓存键,确定这些缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理,并在遍历第二集合中所有缓存键后清空第二集合中的缓存键,在用户请求对缓存列表的新增操作时,不需要同步判断是否需要对缓存列表,而是将对应的缓存键保存在第一集合中,采用异步处理的方式对缓存列表进行动态缩容,避免了在并发地对同一个缓存键对应的缓存列表进行缩容操作的情况,在保证线上服务满足高并发实时性及缓存系统稳定性的前提下,动态地调整缓存列表大小,减少由于缓存列表不断增大而导致缓存系统数据处理效率下降,或在大数据量的缓存列表下的增删查操作需要耗费大量计算资源的情况,有效缓解大数据量的缓存列表对缓存系统造成的性能问题。
附图说明
18.图1是本技术实施例提供的一种缓存缩容方法的流程图;
19.图2是本技术实施例提供的一种分布式场景下的服务架构示意图;
20.图3是本技术实施例提供的另一种缓存缩容方法的流程图;
21.图4是本技术实施例提供的一种缩容处理示意图;
22.图5是本技术实施例提供的另一种缓存缩容方法的流程图;
23.图6是本技术实施例提供的一种缓存缩容装置的结构示意图;
24.图7是本技术实施例提供的一种缓存缩容设备的结构示意图。
具体实施方式
25.为了使本技术的目的、技术方案和优点更加清楚,下面结合附图对本技术具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术,而非对本技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本技术相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时上述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。上述处理可以对应于方法、函数、规程、子例程、子程序等等。
26.图1给出了本技术实施例提供的一种缓存缩容方法的流程图,本技术实施例提供的缓存缩容方法可以由缓存缩容装置来执行,该缓存缩容装置可以通过硬件和/或软件的
方式实现,并集成在缓存缩容设备中。
27.下述以缓存缩容装置执行缓存缩容方法为例进行描述。参考图1,该缓存缩容方法包括:
28.s101:按照设定时间间隔从第一集合中随机选取第一设定数量的缓存键,并将选取的缓存键转移到第二集合中,第一集合中的缓存键在对应的缓存列表进行新增操作时更新得到。
29.示例性的,本实施例提供的缓存缩容装置可集成在分布式场景下的服务器中,如图2提供的一种分布式场景下的服务架构示意图所示,由多个服务端(图中服务1-n)组成一个分布式集群,不同的服务端之间是对等的,并且多个服务端共用一个缓存集群,缓存集群通过分布式缓存系统(例如redis、pika等存储系统)存储数据,缓存系统使用键值对(key-value)的方式存储数据,缓存键(key)对应的缓存值(value)以缓存列表(例如redis的set、zset、list等列表)的形式记录数据。例如们采用redis的zset结构来存储用户的通知列表,用户发出线上请求时,将根据线上请求携带的缓存键(key)确定数据操作对应的缓存列表,例如在短视频应用中,用户b在点赞用户a的视频时,需要在用户a对应的通知列表中新增点赞信息,则向服务端发出点赞新增请求,服务端在接收到点赞新增请求时,根据点赞新增请求对应的缓存键(add key)确定到用户a的通知列表,并对通知列表进行更新,此时用户a的通知列表中新增了用户b对其视频进行点赞的通知信息。
30.可以理解的是,线上的请求按照设定的负载均衡策略分发到对应的服务端上,在这种场景下会出现不同的线上请求并发地修改缓存列表的情况(例如大量用户同时对用户a的视频进行点赞,就会并发地对用户a的通知列表进行更新操作),如果在服务端1-n中有多个点同时判断到需要对用户a的通知列表进行删除(缩容操作),则会造成并发地对同一个缓存键对应的缓存列表进行删除操作,这会影响该缓存键的读取速度。为了避免在线上请求中同步进行缓存列表的缩容判断操作,本方案采用异步清理的方式对缓存列表进行缩容,降低高并发的缩容操作对线上请求的实时性造成影响,同时减少对缓存系统的访问次数,减少缓存系统线上服务接口的处理耗时,保证缓存系统的实时性能。在不同的服务端上随机挑选出需要删除的缓存键,减少缓存系统因并发删除操作影响线上的读取速度。
31.具体的,本方案在缓存缩容装置中维护一个用于保存缓存键(key)的第一集合以及第二集合,并按照设定时间间隔从第一集合中随机选取第一设定数量的缓存键,并将选取出的缓存键从第一集合转移到第二集合中,即将选择的缓存键从第一集合中删除并添加至第二集合中。
32.其中,本实施例提供的第一集合中的缓存键在对应的缓存列表进行新增操作时更新得到,即缓存键在对应的缓存列表进行新增操作(add操作)时更新到第一集合中,对缓存列表进行的新增操作可理解为对缓存键对应的缓存列表中增加相应的元素,例如一个用户对应的增加操作对应缓存列表上的一个元素。基于此,本方案提供的缓存缩容方法还包括:
33.s1001:响应于对缓存列表进行的新增操作,确定缓存列表对应的缓存键是否存在于第一集合中。
34.具体的,在接收到对缓存列表进行新增操作的在线请求时,按照在线请求对应的缓存键,对该缓存键对应的缓存列表进行相应的新增操作。进一步的,在对缓存列表进行新增操作后,确定该缓存列表对应的缓存键是否存在于第一集合中。若缓存键存在于第一集
合中,则跳转至步骤s1002,否则跳转至步骤s1003。
35.s1002:若缓存列表对应的缓存键存在于第一集合中,则在第一集合中更新缓存键。
36.在第一集合中记录有各个缓存键加入第一集合的加入时间,以及从缓存键的加入时间开始,对缓存键对应的缓存列表进行新增操作的操作次数(包括缓存键加入第一集合时对应的新增操作)。
37.可以理解的是,若缓存列表对应的缓存键存在于第一集合中,可以理解为在之前的新增操作中已经将该缓存键保存在第一集合中了,则在第一集合中更新该缓存键即可,无需重复在第一集合中添加该缓存键。其中,在第一集合中更新缓存键,可以是对操作次数的更新,即在第一集合中更新对缓存键对应的缓存列表进行新增操作的操作次数。例如在接收到对缓存键对应的缓存列表进行新增操作的在线请求之前,该缓存键已保存在第一集合中,并且次数的操作数次为3(即在缓存键加入第一集合到目前已经对缓存列表进行的3次新增操作),那么在本次对缓存列表的新增操作之后,对该缓存键对应的操作次数进行加一,即将操作次数更新为4。
38.s1003:缓存列表对应的缓存键未存在于第一集合中,则将缓存键添加到第一集合中。
39.可以理解的是,若缓存列表对应的缓存键未存在于第一集合中,可以理解为当前服务端之前未对该缓存键进行新增操作,或者是之前已将缓存键转移到第二集合中进行缩容处理,则将该缓存键添加到第一集合中,并记录该缓存键添加到第一集合中的加入时间以及对缓存列表进行新增操作的操作次数(此时操作次数为1)。其中,向第一集合更新缓存键与从第一集合中移除缓存键到第二集合并不存在绝对的先后关系,即向第一集合更新缓存键可在步骤101之前或之后进行。
40.在一个实施例中,除了按照设定时间间隔从第一集合中随机选取转移到第二集合的缓存键之外,还按照缓存键加入到第一集合的加入时长选取转移到第二集合的缓存键,基于此,本方案提供的缓存缩容方法还包括:在缓存键加入到第一集合的加入时长达到第一设定时长阈值时,将缓存键转移到第二集合中。在对缓存列表进行新增操作或在第一集合中更新缓存键之后,确定缓存键加入到第一集合的加入时长(当前时间-加入时间),若加入时长达到第一设定时长阈值(例如设置为5min),则直接将该缓存键从第一集合转移到第二集合中等待进行缩容处理,以减少缓存键停留在第一集合的时间过长而未及时进行缩容处理的情况。
41.s102:遍历第二集合中的缓存键,确定第二集合中的缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理。
42.示例性的,在将第一集合中第一预设数量的缓存键转移到第二集合后,遍历第二集合中的缓存键,对于每一个缓存键,确定对应的缓存列表的列表大小,确定列表大小达到设定删除阈值的缓存列表,并对这些列表大小达到设定删除阈值的缓存列表进行缩容处理。
43.其中,对缓存列表的缩容处理为对缓存列表中记录的元素进行删除,以删除固定大小的元素,或者是使缓存列表的列表大小缩小到设定的数据阈值。在一个实施例中,对缓存系统中的缓存列表的缩容操作可通过缓存系统提供的数据接口进行,例如通过redis的
api接口执行缩容操作。
44.s103:清空第二集合中的缓存键。
45.具体的,在遍历第二集合中的所有缓存键并完成对列表大小达到设定删除阈值的缓存列表的缩容处理后,清空第二集合中的全部缓存键。
46.上述,通过在对缓存列表进行新增操作时,将对应的缓存键更新到第一集合中,并按照设定的时间间隔从第一集合中随机选取第一设定数量的缓存键转移到第二集合中,并遍历加入到第二集合中的缓存键,确定这些缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理,并在遍历第二集合中所有缓存键后清空第二集合中的缓存键,在用户请求对缓存列表的新增操作时,不需要同步判断是否需要对缓存列表,而是将对应的缓存键保存在第一集合中,采用异步处理的方式对缓存列表进行动态缩容,避免了在并发地对同一个缓存键对应的缓存列表进行缩容操作的情况,在保证线上服务满足高并发实时性及缓存系统稳定性的前提下,动态地调整缓存列表大小,减少由于缓存列表不断增大而导致缓存系统数据处理效率下降,或在大数据量的缓存列表下的增删查操作需要耗费大量计算资源的情况,有效缓解大数据量的缓存列表对缓存系统造成的性能问题。
47.在上述实施例的基础上,图3给出了本技术实施例提供的另一种缓存缩容方法的流程图,该缓存缩容方法是对上述缓存缩容方法的具体化。参考图3,该缓存缩容方法包括:
48.s201:按照设定时间间隔从第一集合中随机选取第一设定数量的缓存键,并将选取的缓存键转移到第二集合中,第一集合中的缓存键在对应的缓存列表进行新增操作时更新得到。
49.s202:遍历第二集合中的缓存键,确定第二集合中的缓存键对应的缓存列表的列表大小。
50.s203:对列表大小达到设定删除阈值的缓存列表进行缩容处理。
51.具体的,本实施例以分页的方式删除缓存列表中的元素以实现对缓存列表的缩容处理,基于此,本方案在对列表大小达到设定删除阈值的缓存列表进行缩容处理时,具体包括:
52.s2031:在缓存列表的列表大小达到设定删除阈值时,获取对缓存列表进行新增操作的操作频率。
53.具体的,对于每个缓存键,将其对应的缓存列表的列表大小与设定删除阈值进行比较,在列表大小小于设定删除阈值时,认为该缓存列表的大小在合理范围内,不需要对该缓存列表进行缩容处理并忽略该缓存列表,继续将下一个缓存列表的列表大小与设定删除阈值进行比较。而在缓存列表的列表大小达到设定删除阈值时,则进一步获取在将对应缓存键加入第一集合到当前时间段内,对该缓存列表进行新增操作(包括将缓存键加入第一集合时对应的新增操作)的操作频率,其中,操作频率=操作次数/(当前时间-加入时间)。
54.s2032:根据操作频率对缓存列表进行分页缩容处理。
55.具体的,按照对缓存列表进行新增操作的操作频率确定对缓存列表进行分页缩容处理的处理速度,并按照确定的处理速度对缓存列表进行分页缩容处理,并且操作频率越高,对缓存列表进行分页缩容处理的处理速度越快。
56.其中,对缓存列表进行分页缩容处理的处理速度基于删除步长和删除步数(处理
速度=删除步长*删除步数)确定,其中删除步数可理解为对缓存列表进行元素删除的次数(即分页缩容处理对应的页数),删除步长可理解为每次对缓存列表进行元素删除的元素量(即分页缩容处理对应的每页的内容)。基于此,本方案在根据操作频率对缓存列表进行分页缩容处理时,具体包括:
57.s20321:在操作频率达到设定频率阈值时,按照设定的第一删除步长和第一删除步数对缓存列表进行分页缩容处理。
58.s20322:在操作频率未达到设定频率阈值时,按照设定的第二删除步长和第二删除步数对缓存列表进行分页缩容处理,第一删除步长大于第二删除步长,第一删除步数大于第二删除步数。
59.具体的,对于每个列表大小达到设定删除阈值的缓存列表,在对应的操作频率达到设定频率阈值(例如每秒新增500个元素)时,可认为当前有较多用户请求对该缓存键的新增操作,即该缓存键为热键(热key),例如在多个用户对同一用户的视频进行点赞时,对该用户的视频进行点赞的频率达到设定频率阈值时,需要选择更大的操作速度对缓存列表进行缩容处理,保证数据得到及时的清理。而在操作频率未达到设定频率阈值时,可认为当前发出对该缓存键的新增操作请求的用户并不多,可选择较小的操作速度对缓存列表进行缩容处理,以避免并发的删除操作对线上读取业务的影响。本实施例在操作频率越大时对数据的删除速度越快,对应的,第一删除步长大于第二删除步长,第一删除步数大于第二删除步数。
60.具体的,在操作频率达到设定频率阈值时,按照设定的第一删除步长和第一删除步数对缓存列表进行分页缩容处理,例如将第一删除步长设置为每步500个元素,将第一删除步数设置为10步,则分10次删除缓存列表中的元素,每次删除500个元素,共删除5000个元素。而在操作频率未达到设定频率阈值时,按照设定的第二删除步长和第二删除步数对缓存列表进行分页缩容处理,例如将第一删除步长设置为每步100个元素,将第一删除步数设置为5步,则分5次删除缓存列表中的元素,每次删除100个元素,共删除500个元素。
61.其中对缓存列表的缩容处理可以是将缓存列表的列表大小缩小到设定数据阈值,并且对缓存列表中的元素的删除方向是按照元素排序从后往前的方向,其中对元素的排序可以是按照设定的分数计算规则得到的分数进行排序,元素的得分越高,其重要性越高,对应的排序越靠前,还可以是根据元素添加的时间进行排序,元素添加的时间越晚,对应的排序越靠前。如图4提供的一种缩容处理示意图所示,其中maxthreshold为设定数据阈值,delthreshold为设定删除阈值,在缓存列表的列表大小达到设定删除阈值时,按照确定的删除步长和删除步数,按照从后往前的方向(图中l方向)删除缓存列表中的元素,从而将缓存列表缩小到设定数据阈值对应的列表大小。可以理解的是,在列表大小超过设定删除阈值,使得剩余的元素对应的数据大小小于一个删除步长的大小时,其中一步的删除步长可设置为剩余的元素对应的数据大小。
62.s204:清空第二集合中的缓存键。
63.上述,通过在对缓存列表进行新增操作时,将对应的缓存键更新到第一集合中,并按照设定的时间间隔从第一集合中随机选取第一设定数量的缓存键转移到第二集合中,并遍历加入到第二集合中的缓存键,确定这些缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理,并在遍历第二集合中所有缓存键后清空第
二集合中的缓存键,在用户请求对缓存列表的新增操作时,不需要同步判断是否需要对缓存列表,而是将对应的缓存键保存在第一集合中,采用异步处理的方式对缓存列表进行动态缩容,避免了在并发地对同一个缓存键对应的缓存列表进行缩容操作的情况,在保证线上服务满足高并发实时性及缓存系统稳定性的前提下,动态地调整缓存列表大小,减少由于缓存列表不断增大而导致缓存系统数据处理效率下降,或在大数据量的缓存列表下的增删查操作需要耗费大量计算资源的情况,有效缓解大数据量的缓存列表对缓存系统造成的性能问题。同时,通过对缓存键的随机选取策略减少了并发处理热键的情况,减少对缓存系统的访问次数,降低数据清理任务给线上业务带来额外的耗时开销,并且为了保证热键得到及时的清理,根据操作频率识别出第二集合中的热键,并加快对热键的缩容处理速度,并减少数据系统为了保证数据的一致性对数据进行加锁操作而导致缓存列表的读取耗时增加的情况,减少在分布式并发的场景下,不同的服务端同时对同一个缓存列表进行删除操作造成缓存系统性能下降得我情况。对于热键的缩容处理方式并不是增加对相应缓存列表的删除频率,而是选择更大的删除步长和删除步数进行分页缩容处理,加快对缓存列表上的元素的删除速度,保证数据得到及时的清理。
64.在上述实施例的基础上,图5给出了本技术实施例提供的另一种缓存缩容方法的流程图,该缓存缩容方法是对上述缓存缩容方法的具体化。参考图5,该缓存缩容方法包括:
65.s301:在第一集合中缓存键的数量未达到第二设定数量时,向第一集合中添加虚拟缓存键,以使第一集合中缓存键的数量达到第二设定数量。
66.具体的,按照设定时间间隔、在将第一设定数量的缓存键移动至第二集合中后或者是在每次清空第二集合中的缓存键后,确定第一集合中所记录的缓存键的数量,并在第一集合中缓存键的数量未达到第二设定数量时,向第一集合中添加虚拟缓存键(虚拟key),以使第一集合中缓存键的数量第二设定数量。
67.s302:按照设定时间间隔从第一集合中随机选取第一设定数量的缓存键,并将选取的缓存键转移到第二集合中,第一集合中的缓存键在对应的缓存列表进行新增操作时更新得到。
68.s303:遍历第二集合中的缓存键,判断缓存键是否为虚拟缓存键。
69.在将第一设定数量的缓存键移动至第二集合中后,遍历第二集合中的所有缓存键,对于每一个缓存键的类型进行判断,确定当前缓存键是否为虚拟缓存键。若当前缓存键为虚拟缓存键,则跳转至步骤s304,若当前缓存键不是虚拟缓存键,则跳转至步骤s305。
70.s304:在缓存键为虚拟缓存键时,在设定等待时间后再遍历下一个缓存键。
71.具体的,在当前缓存键为虚拟缓存键时,则睡眠(sleep)至设定等待时间(例如1秒),在设定等待时间后再返回到步骤s303,继续遍历下一个缓存键。本方案在第一集合中加入虚拟缓存键,可有效减少热键(对应的操作频率达到设定频率阈值的缓存键)被频繁处理的情况,减少不同服务端同时请求对热键的缩容操作而影响线上读取业务的正常进行的情况。
72.s305:确定第二集合中的缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理。
73.s306:在缓存键加入到第一集合的加入时长达到第二设定时长阈值时,将缓存键标记为过期缓存键,并确定第二集合中的过期缓存键的过期缓存键占比。
74.具体的,在遍历到第二集合中的每一个缓存键时,确定该缓存键加入到第一集合的加入时长,若加入时长达到第二设定时长阈值(例如5min),则将缓存键标记为过期缓存键。
75.进一步的,在清空第二集合中的缓存键之前,确定第二集合中的过期缓存键的过期缓存键占比,即被标记为过期缓存键的缓存键占第二集合中所有缓存键的占比。
76.s307:清空第二集合中的缓存键。
77.s308:在过期缓存键占比达到设定比例阈值时,重新从第一集合中随机选取第一设定数量的缓存键转移到第二集合进行缩容处理。
78.具体的,在期缓存键占比达到设定比例阈值时,可认为在第一集合中还存在较多长时间未处理的缓存键,则返回步骤s301中,重新从第一集合中随机选取第一设定数量的缓存键转移到第二集合进行缩容处理,不需要等到设定时间间隔再从第一集合中随机选取缓存键进行缩容处理。而在期缓存键占比未达到设定比例阈值时,则按照设定时间间隔再从第一集合中随机选取缓存键进行缩容处理。
79.上述,通过在对缓存列表进行新增操作时,将对应的缓存键更新到第一集合中,并按照设定的时间间隔从第一集合中随机选取第一设定数量的缓存键转移到第二集合中,并遍历加入到第二集合中的缓存键,确定这些缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理,并在遍历第二集合中所有缓存键后清空第二集合中的缓存键,在用户请求对缓存列表的新增操作时,不需要同步判断是否需要对缓存列表,而是将对应的缓存键保存在第一集合中,采用异步处理的方式对缓存列表进行动态缩容,避免了在并发地对同一个缓存键对应的缓存列表进行缩容操作的情况,在保证线上服务满足高并发实时性及缓存系统稳定性的前提下,动态地调整缓存列表大小,减少由于缓存列表不断增大而导致缓存系统数据处理效率下降,或在大数据量的缓存列表下的增删查操作需要耗费大量计算资源的情况,有效缓解大数据量的缓存列表对缓存系统造成的性能问题。同时,在第一集合中加入虚拟缓存键,在遍历到虚拟缓存键时等待一段时间,可有效减少热键被频繁处理的情况,减少不同服务端同时请求对热键的缩容操作而影响线上读取业务的正常进行的情况。并且基于贪心策略,在期缓存键占比达到设定比例阈值时,重新从第一集合中随机选取第一设定数量的缓存键转移到第二集合进行缩容处理,保证数据得到及时的清理。
80.图6是本技术实施例提供的一种缓存缩容装置的结构示意图。参考图6,该缓存缩容装置包括缓存键抽选模块61、缩容处理模块62和缓存键清空模块63。
81.其中,缓存键抽选模块61,用于按照设定时间间隔从第一集合中随机选取第一设定数量的缓存键,并将选取的缓存键转移到第二集合中,第一集合中的缓存键在对应的缓存列表进行新增操作时更新得到;缩容处理模块62,用于遍历第二集合中的缓存键,确定第二集合中的缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理;缓存键清空模块63,用于清空第二集合中的缓存键。
82.上述,通过在对缓存列表进行新增操作时,将对应的缓存键更新到第一集合中,并按照设定的时间间隔从第一集合中随机选取第一设定数量的缓存键转移到第二集合中,并遍历加入到第二集合中的缓存键,确定这些缓存键对应的缓存列表的列表大小,对列表大小达到设定删除阈值的缓存列表进行缩容处理,并在遍历第二集合中所有缓存键后清空第
二集合中的缓存键,在用户请求对缓存列表的新增操作时,不需要同步判断是否需要对缓存列表,而是将对应的缓存键保存在第一集合中,采用异步处理的方式对缓存列表进行动态缩容,避免了在并发地对同一个缓存键对应的缓存列表进行缩容操作的情况,在保证线上服务满足高并发实时性及缓存系统稳定性的前提下,动态地调整缓存列表大小,减少由于缓存列表不断增大而导致缓存系统数据处理效率下降,或在大数据量的缓存列表下的增删查操作需要耗费大量计算资源的情况,有效缓解大数据量的缓存列表对缓存系统造成的性能问题。
83.本技术实施例还提供了一种缓存缩容设备,该缓存缩容设备可集成本技术实施例提供的缓存缩容装置。图7是本技术实施例提供的一种缓存缩容设备的结构示意图。参考图7,该缓存缩容设备包括:输入装置73、输出装置74、存储器72以及一个或多个处理器71;存储器72,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器71执行,使得一个或多个处理器71实现如上述实施例提供的缓存缩容方法。上述提供的缓存缩容装置、设备和计算机可用于执行上述任意实施例提供的缓存缩容方法,具备相应的功能和有益效果。
84.本技术实施例还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的缓存缩容方法。当然,本技术实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上提供的缓存缩容方法,还可以执行本技术任意实施例所提供的缓存缩容方法中的相关操作。上述实施例中提供的缓存缩容装置、设备及存储介质可执行本技术任意实施例所提供的缓存缩容方法,未在上述实施例中详尽描述的技术细节,可参见本技术任意实施例所提供的缓存缩容方法。
85.上述仅为本技术的较佳实施例及所运用的技术原理。本技术不限于这里提供的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本技术的保护范围。因此,虽然通过以上实施例对本技术进行了较为详细的说明,但是本技术不仅仅限于以上实施例,在不脱离本技术构思的情况下,还可以包括更多其他等效实施例,而本技术的范围由权利要求的范围决定。
再多了解一些

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

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

相关文献