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

一种缓存类型确定方法、装置、设备及存储介质与流程

2023-03-28 22:48:49 来源:中国专利 TAG:


1.本发明实施例涉及计算机技术领域,尤其涉及一种缓存类型确定方法、装置、设备及存储介质。


背景技术:

2.缓存可提升solr搜索性能,尤其针对高命中率的场景,但由于solr缓存对象与对应搜索器实例强关联的特性,使得新搜索器打开旧搜索器关闭时之前的缓存对象会全部失效,进而导致搜索性能在一段时间内急剧下降,用户体验变差。
3.在实际应用过程中,因用户检索场景复杂多样,简单且固定地对缓存进行处理的方案会增加服务器内存、cpu、io等资源的消耗,进而降低solr搜索性能的稳定性。


技术实现要素:

4.本发明实施例提供一种缓存类型确定方法、装置、设备及存储介质,解决了简单且固定的缓存处理方案会增加资源消耗,进而降低solr搜索性能的问题。
5.根据本发明的一方面,提供了一种缓存类型确定方法,包括:
6.接收查询请求;
7.解析所述查询请求,得到所述查询请求对应的缓存标识和缓存参数;
8.根据所述缓存标识和缓存参数确定缓存类型。
9.根据本发明的另一方面,提供了一种缓存类型确定装置,该缓存类型确定装置包括:
10.接收模块,用于接收查询请求;
11.解析模块,用于解析所述查询请求,得到所述查询请求对应的缓存标识和缓存参数;
12.确定模块,用于根据所述缓存标识和缓存参数确定缓存类型。
13.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
14.至少一个处理器;以及
15.与所述至少一个处理器通信连接的存储器;其中,
16.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的缓存类型确定方法。
17.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的缓存类型确定方法。
18.本发明实施例通过接收查询请求;解析所述查询请求,得到所述查询请求对应的缓存标识和缓存参数;根据所述缓存标识和缓存参数确定缓存类型,解决了简单且固定的缓存处理方案会增加资源消耗,进而降低solr搜索性能的问题,能够实现对查询请求进行
并集缓存,确定缓存类型后可进行分级缓存,进而提升用户使用体验。
19.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
20.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
21.图1是本发明实施例一中的一种缓存类型确定方法的流程图;
22.图2是本发明实施例一中的另一种缓存类型确定方法的流程图;
23.图3是本发明实施例一中的一种缓存预热的流程图;
24.图4是本发明实施例二中的一种缓存类型确定装置的结构示意图;
25.图5是本发明实施例三中的一种电子设备的结构示意图。
具体实施方式
26.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
27.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
28.实施例一
29.图1是本发明实施例一中的一种缓存类型确定方法的流程图,本实施例可适用于fieldvaluecache、filtercache和queryresultcache缓存预热的情况,需要说明的是,solr solrconfig.xml文件query section配置部分默认提供的5类缓存中,persegfilter:custom cache currently used by block join,用于块连接的定制缓存,无分级缓存需求;documentcache:document cache,用于缓存lucene document对象(每个文档的存储字段),对分级缓存需求不强;fieldvaluecache:field value cache,域内存,对分级缓存需求强;filtercache:filter cache,用于存储filter queries(“fq”参数)得到的document id集合结果,对分级缓存需求强;queryresultcache:query result cache,是对查询结果的缓存,此结果是针对查询条件的完全有序的结果,对分级缓存需求强,因此本实施例的缓存类型确定方法主要是针对分级缓存需求强的fieldvaluecache、filtercache和
queryresultcache三类缓存。
30.缓存类型确定方法可以由本发明实施例中的缓存类型确定装置来执行,该装置可采用软件和/或硬件的方式实现,如图1所示,该方法具体包括如下步骤:
31.s110,接收查询请求。
32.其中,查询请求为用户通过搜索框检索信息的请求。
33.具体的,接收查询请求的方式可以为:用户通过搜索框输入检索信息,计算机可接收用户输入的检索信息,即查询请求。
34.s120,解析查询请求,得到查询请求对应的缓存标识和缓存参数。
35.其中,查询请求对应的缓存标识可以为缓存key,key是能够唯一标志缓存的键值,通过缓存key能够在缓存集合中获取缓存key对应的缓存。
36.其中,缓存参数可以为ispressing,调整solr查询代码,通过querycommand增加boolean类型参数ispressing,设置参数ispressing为true时表示迫切,为false时表示普通,默认为false。用户可根据检索场景的不同将检索条件分为迫切、普通(不迫切)两级,用户可自行设定检索条件是否迫切。
37.具体的,解析查询请求,得到查询请求对应的缓存标识和缓存参数的方式可以为:接收查询请求并进行解析,得到查询请求对应的缓存标识key,根据缓存key确定缓存,同时得到缓存key对应缓存的缓存参数。
38.s130,根据缓存标识和缓存参数确定缓存类型。
39.其中,缓存类型为根据调整缓存设置代码后,solrcachebase增加pressingflag标志,并为pressingflag标志设置数值,故缓存类型可分为三类:当pressingflag标志设置数值为0时,表示缓存类型为普通;当pressingflag标志设置数值为1时,表示缓存类型为迫切;当pressingflag标志设置数值为2时,表示缓存类型为普通 迫切。
40.具体的,根据缓存标识和缓存参数确定缓存类型的方式可以为:获取查询请求对应的缓存标识和缓存参数,若缓存标识对应的缓存已存在于缓存集合中,则根据查询请求对应的缓存标识、缓存参数以及缓存集合中缓存标识对应的缓存的缓存标签重新确定查询请求中缓存标识对应的缓存的缓存类型;若缓存标识对应的缓存不存在于缓存集合中,则根据缓存标识和缓存参数确定缓存类型并将缓存标识对应的缓存添加至缓存集合。
41.可选的,根据所述缓存标识和缓存参数确定缓存类型,包括:
42.若缓存集合中存在与所述缓存标识对应的缓存,则获取所述缓存标识对应的缓存标签;
43.根据所述缓存参数和所述缓存标签确定缓存类型。
44.其中,缓存集合为用户在进行查询检索时有效的缓存存储集合。其中,缓存标签为:若缓存标识对应的缓存已存在于缓存集合中,则缓存标签为缓存集合中该缓存的pressingflag标志。
45.具体的,若缓存集合中存在与所述缓存标识对应的缓存,则获取所述缓存标识对应的缓存标签的方式可以为:根据缓存标识确定缓存标识对应的缓存,遍历缓存集合,若缓存标识对应的缓存已存在于缓存集合中,则获取该缓存在缓存集合中的缓存标签。
46.具体的,根据所述缓存参数和所述缓存标签确定缓存类型的方式可以为:获取缓存参数和缓存标签,若缓存参数ispressing为true,缓存标签的数值为0,则确定缓存类型
为普通 迫切;若缓存参数ispressing为false,缓存标签的数值为1,则确定缓存类型为普通 迫切。
47.可选的,根据所述缓存参数和所述缓存标签确定缓存类型,包括:
48.若缓存参数为第一参数,且所述缓存标签为第一数值,则确定缓存类型为第一类型;
49.若缓存参数为第二参数,且所述缓存标签为第二数值,则确定缓存类型为第一类型。
50.其中,第一参数为true,第二参数为false。第一数值为0,第二数值为1。第一类型为普通 迫切,此时pressingflag标志设置数值为2。
51.具体的,若缓存参数为第一参数,且所述缓存标签为第一数值,则确定缓存类型为第一类型的方式可以为:若查询请求中缓存标识对应的缓存的缓存参数为true,表明用户在此次查询请求中设置缓存标识对应的缓存为迫切级别,且当缓存标识对应的缓存已存在于缓存集合中,且缓存标签数值为0时,表明已存在于缓存集合中的缓存为普通级别,则根据缓存参数为true和缓存标签数值为0确定此次查询请求中该缓存标识对应的缓存的缓存类型为普通 迫切。
52.具体的,若缓存参数为第二参数,且所述缓存标签为第二数值,则确定缓存类型为第一类型的方式可以为:若查询请求中的缓存标识对应的缓存的缓存参数为false,表明用户在此次查询请求中设置缓存标识对应的缓存为普通级别,且当缓存标识对应的缓存已存在于缓存集合中,且缓存标签数值为1时,表明已存在于缓存集合中的缓存为迫切级别,则根据缓存参数为false和缓存标签数值为1确定此次查询请求中该缓存标识对应的缓存的缓存类型为普通 迫切。
53.可选的,还包括:
54.若缓存集合中不存在与所述缓存标识对应的缓存,则将所述缓存标识添加至待设置缓存标识序列。
55.其中,待设置缓存标识序列用来存储未存在于缓存集合中的查询请求中缓存标识,可用于后续确定缓存标识对应的缓存的缓存类型。
56.具体的,若缓存集合中不存在与所述缓存标识对应的缓存,则将所述缓存标识添加至待设置缓存标识序列的方式可以为:根据缓存标识确定缓存标识对应的缓存,遍历缓存集合,若缓存标识对应的缓存不存在于缓存集合,表明之前该缓存标识对应的缓存并未存在于缓存集合中,则将该缓存标识添加至待设置缓存标识序列。
57.可选的,还包括:
58.获取待设置缓存标识序列中的待设置缓存标识;
59.获取待设置缓存标识对应的缓存参数;
60.根据所述待设置缓存标识对应的缓存参数确定缓存类型。
61.其中,待设置缓存标识为存储在待设置缓存标识序列中的缓存标识。
62.具体的,获取待设置缓存标识序列中的待设置缓存标识的方式可以为:获取待设置缓存标识序列,根据待设置缓存标识序列获取待设置缓存标识。
63.具体的,获取待设置缓存标识对应的缓存参数的方式可以为:获取待设置缓存标识,根据待设置缓存标识获取对应的缓存参数。
64.具体的,根据所述待设置缓存标识对应的缓存参数确定缓存类型的方式可以为:获取待设置缓存标识对应缓存的缓存参数,根据缓存参数确定缓存类型,若缓存参数ispressing为true,则确定缓存类型为迫切;若缓存参数ispressing为false,则确定缓存类型为普通。
65.可选的,根据所述待设置缓存标识对应缓存参数确定缓存类型,包括:
66.若待设置缓存标识对应缓存参数为第一参数,则确定缓存类型为第二类型,并将所述待设置缓存标识对应缓存添加至所述缓存集合;
67.若待设置缓存标识对应缓存参数为第二参数,则确定缓存类型为第三类型,并将所述待设置缓存标识对应缓存添加至所述缓存集合。
68.其中,第二类型为迫切,此时pressingflag标志设置数值为1;第三类型为普通,此时pressingflag标志设置数值为0。
69.具体的,若待设置缓存标识对应缓存参数为第一参数,则确定缓存类型为第二类型,并将所述待设置缓存标识对应缓存添加至所述缓存集合的方式可以为:若待设置缓存标识对应缓存参数为true,确定该待设置缓存标识对应的缓存的缓存类型为迫切,在缓存类型确定完成后将该待设置缓存标识对应的缓存添加至缓存集合。
70.具体的,若待设置缓存标识对应缓存参数为第二参数,则确定缓存类型为第三类型,并将所述待设置缓存标识对应缓存添加至所述缓存集合的方式可以为:若待设置缓存标识对应缓存参数为false,确定缓存类型为普通,在缓存类型确定完成后将该待设置缓存标识对应的缓存添加至缓存集合。需要注意的,设置待设置缓存序列中的待设置缓存标识对应的缓存的缓存类型时需要查询缓存容量,若缓存容量未达到上限,则直接根据待设置缓存标识对应的缓存参数确定缓存类型,若缓存容量已达到上限,则会触发加权淘汰策略,之后才可以根据待设置缓存标识对应的缓存参数确定缓存类型。
71.需要说明的是,在相同类别、不同级别的缓存归入同一缓存时,此缓存既为迫切缓存也为普通缓存,即此缓存的缓存类型为第一类型,此方法可实现并集缓存,且相同类别、相同缓存标识key的缓存只会保留一份,能够减少内存使用及预热时cpu、io等性能消耗。
72.图2是本发明实施例一中的另一种缓存类型确定方法的流程图,其中,缓存命中数在判断缓存参数ispressing时都会进行计数,作为访问频率指标,以便后续加权淘汰策略时使用。如图2所示,先解析本次查询请求的缓存标识key,若缓存标识key对应的缓存已存在于缓存集合中,且缓存参数ispressing为true,则缓存命中计数迫切次数加1,若此时缓存集合中的缓存标签pressingflag数值为0,则重新设置缓存的pressingflag为2,即设置缓存标识key对应的缓存的缓存类型为第一类型,需要说明的是,此种情况下只考虑已存在于缓存集合中的缓存的缓存标签pressingflag数值为0的情况,若缓存标签pressingflag数值不为0,则保持此缓存标签pressingflag的数值不变,根据缓存标签pressingflag的数值确定缓存类型,例如可以是,若已存在于缓存集合中的缓存的缓存标签pressingflag的数值为1,则直接确定该缓存的缓存类型为第二类型,若已存在于缓存集合中的缓存的缓存标签pressingflag的数值为2,则直接确定该缓存的缓存类型为第一类型。若缓存标识key对应的缓存已存在于缓存集合中,且缓存参数ispressing不为true时(为false),则缓存命中计数普通次数加1,若此时缓存集合中的缓存标签pressingflag数值为1时,则重新设置此缓存的pressingflag为2,即设置缓存标识key对应的缓存的缓存类型为第一类型,需要
说明的是,此种情况下只考虑已存在于缓存集合中的缓存的缓存标签pressingflag为1时的情况。若缓存标识key对应缓存未存在于缓存集合中,则将当前的缓存标识key添加至待设置缓存key序列。若缓存容量未达到上限,待设置缓存key序列中的待设置缓存标识对应的缓存参数ispressing为true,则缓存命中计数迫切次数加1,将待设置缓存标识对应的缓存的pressingflag设置为1,即待设置缓存标识对应的缓存的缓存类型为第二类型;若待设置缓存key序列中的待设置缓存标识对应的缓存参数ispressing不为true(为false),则缓存命中计数普通次数加1,将待设置缓存标识对应的缓存的pressingflag设置为0,即待设置缓存标识对应的缓存的缓存类型为第三类型。若缓存容量已达到上限,则触发加权caffine cache缓存策略,之后才可以根据缓存参数确定待设置缓存key对应的缓存的缓存类型。
73.可选的,还包括:
74.获取迫切缓存预热数量;
75.若迫切缓存预热数量大于第一数值,则将缓存集合中缓存类型为第一类型或者第二类型的缓存添加至待处理迫切缓存序列;
76.基于加权淘汰策略对所述待处理迫切缓存序列进行筛选,得到待预热迫切缓存集合和被淘汰迫切缓存集合;
77.对待预热迫切缓存集合启动缓存预热。
78.其中,迫切缓存预热数量为新增参数,调整配置文件solrconfig.xml中的缓存预热参数,增加迫切缓存预热数量设置参数autowarmpressingcount,原缓存预热数量设置参数autowarmcount调整为普通缓存预热数量设置参数。需要注意的是,现有缓存预热方案中,solrconfig.xml配置文件cache的size参数默认值为512,而autowarmcount参数默认值为0,提示着使用者们谨慎启用缓存预热功能,因为更多的缓存条目需要预热,就会消耗更多的服务器性能,花费更多的搜索器构建时间。一种极端但又不难复现的情景是,因预热缓存条目过多,搜索器未能在新一次索引提交之前构建完成,而导致构建工作白费。所以,内存允许的情况下,缓存的size参数可以设置的大一些,autowarmcount参数却要慎之又慎,需综合考虑服务器性能、软提交、opensearcher设置为true的硬提交的maxtime参数以及索引数据量等多种因素,尽力做到缓存预热利益最大化。
79.其中,第一数值可以为0。待处理迫切缓存序列为存储缓存集合中缓存类型为第一类型或第二类型的缓存,需要注意的是,此时的缓存集合为调用solrindexsearcher内对应的regenerateitem方法重新构建的缓存集合,因为之前的缓存集合在原搜索器关闭后会立即失效,故当新搜索器开始创建时,需重新构建缓存集合,调整solrindexsearcher类initregenerators方法内相应重新生成新搜索器缓存项的代码,将原缓存集合中缓存oldcache的pressingflag标志赋值给新缓存集合中缓存newcache,即缓存集合中的缓存标识对应缓存及缓存类型保持不变。
80.其中,缓存预热为一种主动缓存手段,可以将需使用的数据预先缓存到本地,在查询时直接提供使用。
81.其中,加权淘汰策略可以为调整caffeine缓存策略w-tinylfu后得到的加权caffine cache缓存策略。基于caffeine缓存策略,调整solr缓存淘汰算法,使淘汰算法可根据用户检索场景是否迫切进行加权处置。例如可以是设置普通权值为1,迫切权值为10。
82.需要说明的是,加权淘汰策略可用于查询请求解析阶段,当缓存容量达到上限且有新缓存需要加入时,触发加权淘汰策略;加权淘汰策略还可以用于启动缓存预热阶段,对待处理迫切缓存序列触发加权淘汰策略。
83.在一个具体的例子中,若存在三个缓存a、b以及c,缓存a的缓存类型为第三类型,pressingflag标志设置为0;缓存b的缓存类型为第二类型,pressingflag标志设置为1;缓存c的缓存类型为第一类型,pressingflag标志设置为2,其中,缓存a的普通命中次数为200、缓存b的普通命中次数为0以及缓存c的普通命中次数为100;缓存a的迫切命中次数为0,缓存b的迫切命中次数为100,缓存c的迫切命中次数为50。若不考虑权重,缓存a的命中总数为200,缓存b的命中总数为100,缓存c的命中总数为150,若设置普通权值为1,迫切权值为10,缓存a的加权命中总数为200,缓存b的加权命中总数为1000,缓存c的命中总数为600。可以看出,在其他指数相同的情况下,查询请求阶段,加权命中总数使得迫切缓存更容易躲过被淘汰的命运;在预热阶段,加权命中总数也使得迫切命中次数更多的缓存更容易被选中参与预热。
84.其中,待预热迫切缓存集合为基于加权淘汰策略得到的可以进行预热的迫切缓存集合。被淘汰迫切缓存集合为基于加权淘汰策略得到的被淘汰的集合。
85.具体的,获取迫切缓存预热数量的方式可以为:调整配置文件solrconfig.xml中的缓存预热参数,设置autowarmpressingcount参数,此参数为迫切缓存预热数量。
86.具体的,若迫切缓存预热数量大于第一数值,则将缓存集合中缓存类型为第一类型或者第二类型的缓存添加至待处理迫切缓存序列的方式可以为:若autowarmpressingcount大于0,代表存在迫切缓存预热数量,则筛选缓存集合中缓存类型为第一类型或者第二类型的缓存,将其添加至待处理迫切缓存序列。
87.具体的,基于加权淘汰策略对所述待处理迫切缓存序列进行筛选,得到待预热迫切缓存集合和被淘汰迫切缓存集合的方式可以为:获取待处理迫切缓存序列,基于加权caffine cache缓存策略对待处理迫切缓存序列进行筛选,将待处理迫切缓存序列分为待预热迫切缓存集合和被淘汰迫切缓存集合。
88.具体的,对待预热迫切缓存集合启动缓存预热的方式可以为:获取待预热迫切缓存集合,对待预热迫切缓存集合中的缓存启动缓存预热。
89.可选的,还包括:
90.获取普通缓存预热数量;
91.若普通缓存预热数量大于第一数值,则获取被淘汰迫切缓存集合中的缓存类型为第一类型的缓存更新为第三类型,并将更新后的缓存添加至普通缓存集合;
92.基于淘汰策略对普通缓存集合进行筛选,得到待预热普通缓存集合;
93.对待预热普通缓存集合启动缓存预热。
94.其中,普通缓存预热数量为原缓存预热数量设置参数autowarmcount。淘汰策略为caffeine缓存策略。普通缓存集合为存储缓存类型为第三类型的缓存集合。待预热普通缓存集合为可进行缓存预热的普通缓存集合。
95.具体的,获取普通缓存预热数量的方式可以为:调整配置文件solrconfig.xml中的缓存预热参数,设置autowarmcount参数,此参数为普通缓存预热数量。
96.具体的,若普通缓存预热数量大于第一数值,则获取被淘汰迫切缓存集合中的缓
存类型为第一类型的缓存更新为第三类型,并将更新后的缓存添加至普通缓存集合的方式可以为:若autowarmcount大于0,代表存在普通缓存预热数量,获取被淘汰迫切缓存集合,则将被淘汰迫切缓存集合中缓存类型为第一类型的缓存更新为第三类型,即将缓存类型由普通 迫切更新为普通,并将缓存类型更新后的缓存添加至普通缓存集合。
97.具体的,基于淘汰策略对普通缓存集合进行筛选,得到待预热普通缓存集合的方式可以为:基于caffeine缓存策略对普通缓存集合进行筛选,得到待预热普通缓存集合。
98.具体的,对待预热普通缓存集合启动缓存预热的方式可以为:获取待预热普通缓存集合,对待预热普通缓存集合中的缓存启动缓存预热。
99.可选的,还包括:
100.若迫切缓存预热数量小于或者等于第一数值,且普通缓存预热数量大于第一数值,则基于淘汰策略将缓存集合中的目标缓存添加至待预热普通缓存集合;
101.对待预热普通缓存集合启动缓存预热。
102.其中,目标缓存为缓存集合中基于caffeine缓存策略筛选的缓存。
103.具体的,若迫切缓存预热数量小于或者等于第一数值,且普通缓存预热数量大于第一数值,则基于淘汰策略将缓存集合中的目标缓存添加至待预热普通缓存集合的方式可以为:若迫切缓存预热数量autowarmpressingcount小于或等于0,且普通缓存预热数量autowarmcount大于0,表明无迫切缓存预热数量,缓存集合中的缓存可不分缓存类型,或默认所有类型均为第三类型,基于caffeine缓存策略筛选缓存集合,将筛选的缓存添加至待预热普通缓存集合。
104.具体的,对待预热普通缓存集合启动缓存预热的方式可以为:获取待预热普通缓存集合,对待预热普通缓存集合中的缓存启动缓存预热。
105.图3是本发明实施例一中的一种缓存预热的流程图,图3中的缓存集合是在新搜索器创建时,调用solrindexsearcher内对应的regenerateitem方法重新构建的缓存集合。如图3所示,在新搜索器开始创建时,若autowarmpressingcount大于0,则当缓存集合中的缓存pressingflag为1或2,即当缓存集合中的缓存的缓存类型为第一类型或第二类型时,将此缓存添加至待处理迫切缓存序列;当缓存集合中的缓存pressingflag为0时,即当缓存集合中的缓存的缓存类型为第三类型时,且若此时autowarmcount大于0,则将此缓存添加至普通缓存集合。待处理迫切缓存序列基于加权caffine cache缓存策略分为待预热迫切缓存集合和被淘汰迫切缓存集合,对待预热迫切缓存集合启动缓存预热,若autowarmcount大于0时,遍历被淘汰迫切缓存集合,将被淘汰迫切缓存集合中的pressingflag为2的缓存设置为pressingflag为0,即将被淘汰迫切缓存集合中缓存类型为第一类型的缓存更新为缓存类型为第三类型的缓存,并将此缓存添加至普通缓存集合,对普通缓存集合启动caffeine缓存策略得到待预热普通缓存集合,对待预热普通缓存集合进行缓存预热。若autowarmpressingcount小于或等于0,且autowarmcount大于0时,可无需考虑缓存类型,直接对缓存集合启动caffeine缓存策略得到待预热普通缓存集合,对待预热普通缓存集合进行缓存预热。
106.本实施例的技术方案,通过接收查询请求;解析所述查询请求,得到所述查询请求对应的缓存标识和缓存参数;根据所述缓存标识和缓存参数确定缓存类型,解决了简单且固定的缓存处理方案会增加资源消耗,进而降低solr搜索性能的问题,能够实现对查询请
求进行并集缓存,确定缓存类型后可进行分级缓存,进而提升用户使用体验。
107.实施例二
108.图4是本发明实施例二中的一种缓存类型确定装置的结构示意图。本实施例可适用于fieldvaluecache、filtercache和queryresultcache缓存预热的情况,该装置可采用软件和/或硬件的方式实现,该装置可集成在任何提供缓存类型确定的功能的设备中,如图4所示,所述缓存类型确定装置具体包括:接收模块210、解析模块220和确定模块230。
109.其中,接收模块210,用于接收查询请求;
110.解析模块220,用于解析所述查询请求,得到所述查询请求对应的缓存标识和缓存参数;
111.确定模块230,用于根据所述缓存标识和缓存参数确定缓存类型。
112.可选的,所述确定模块具体用于:
113.若缓存集合中存在与所述缓存标识对应的缓存,则获取所述缓存标识对应的缓存标签;
114.根据所述缓存参数和所述缓存标签确定缓存类型。
115.可选的,所述确定模块具体用于:
116.若缓存参数为第一参数,且所述缓存标签为第一数值,则确定缓存类型为第一类型;
117.若缓存参数为第二参数,且所述缓存标签为第二数值,则确定缓存类型为第一类型。
118.可选的,所述确定模块还用于:
119.若缓存集合中不存在与所述缓存标识对应的缓存,则将所述缓存标识添加至待设置缓存标识序列。
120.可选的,所述确定模块还用于:
121.获取待设置缓存标识序列中的待设置缓存标识;
122.获取待设置缓存标识对应的缓存参数;
123.根据所述待设置缓存标识对应的缓存参数确定缓存类型。
124.可选的,所述确定模块具体用于:
125.若待设置缓存标识对应缓存参数为第一参数,则确定缓存类型为第二类型,并将所述待设置缓存标识对应缓存添加至所述缓存集合;
126.若待设置缓存标识对应缓存参数为第二参数,则确定缓存类型为第三类型,并将所述待设置缓存标识对应缓存添加至所述缓存集合。
127.可选的,所述确定模块还用于:
128.获取迫切缓存预热数量;
129.若迫切缓存预热数量大于第一数值,则将缓存集合中缓存类型为第一类型或者第二类型的缓存添加至待处理迫切缓存序列;
130.基于加权淘汰策略对所述待处理迫切缓存序列进行筛选,得到待预热迫切缓存集合和被淘汰迫切缓存集合;
131.对待预热迫切缓存集合启动缓存预热。
132.可选的,所述确定模块还用于:
133.获取普通缓存预热数量;
134.若普通缓存预热数量大于第一数值,则获取被淘汰迫切缓存集合中的缓存类型为第一类型的缓存更新为第三类型,并将更新后的缓存添加至普通缓存集合;
135.基于淘汰策略对普通缓存集合进行筛选,得到待预热普通缓存集合;
136.对待预热普通缓存集合启动缓存预热。
137.可选的,所述确定模块还用于:
138.若迫切缓存预热数量小于或者等于第一数值,且普通缓存预热数量大于第一数值,则基于淘汰策略将缓存集合中的目标缓存添加至待预热普通缓存集合;
139.对待预热普通缓存集合启动缓存预热。
140.上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
141.本实施例的技术方案,通过接收查询请求;解析所述查询请求,得到所述查询请求对应的缓存标识和缓存参数;根据所述缓存标识和缓存参数确定缓存类型,解决了简单且固定的缓存处理方案会增加资源消耗,进而降低solr搜索性能的问题,能够实现对查询请求进行并集缓存,确定缓存类型后可进行分级缓存,进而提升用户使用体验。
142.实施例三
143.图5是本发明实施例三中的一种电子设备的结构示意图。电子设备10旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
144.如图5所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(rom)12、随机访问存储器(ram)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(rom)12中的计算机程序或者从存储单元18加载到随机访问存储器(ram)13中的计算机程序,来执行各种适当的动作和处理。在ram13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、rom12以及ram13通过总线14彼此相连。输入/输出(i/o)接口15也连接至总线14。
145.电子设备10中的多个部件连接至i/o接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
146.处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如缓存类型确定方法。
147.在一些实施例中,缓存类型确定方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以
经由rom12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到ram13并由处理器11执行时,可以执行上文描述的缓存类型确定方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行缓存类型确定方法。
148.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
149.用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
150.在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
151.为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
152.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
153.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过
通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
154.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
155.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献