CN108228669A - 一种缓存处理方法及装置 - Google Patents
一种缓存处理方法及装置 Download PDFInfo
- Publication number
- CN108228669A CN108228669A CN201611198397.5A CN201611198397A CN108228669A CN 108228669 A CN108228669 A CN 108228669A CN 201611198397 A CN201611198397 A CN 201611198397A CN 108228669 A CN108228669 A CN 108228669A
- Authority
- CN
- China
- Prior art keywords
- data cached
- hit
- search
- described search
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种缓存处理方法,包括:接收搜索请求,并根据搜索请求查看是否命中缓存数据;在命中缓存数据的情况下,检测命中的缓存数据是否过期;在过期的情况下,输出命中的缓存数据;在命中的缓存数据没有过期的情况下,分析命中的缓存数据是否在预设的最大过期期限内;在预设的最大过期期限内的情况下,输出命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,根据获取到的搜索结果写入缓存;不在预设的最大过期期限内的情况下,通过搜索层服务获取搜索结果,并根据获取到的搜索结果输出数据。本发明还公开了一种缓存处理装置,解决现有技术中缓存系统的命中率不高,使得搜索服务的延迟较大的技术问题。
Description
技术领域
本发明涉及计算机互联网领域,尤其涉及缓存处理方法以及缓存处理装置。
背景技术
搜索引擎的搜索速度对用户的搜索体验非常关键,如果一个搜索引擎搜索速度非常慢,需要搜索某一关键词需要等一段时间才能显示,那么将严重伤害用户体验。为了提高搜索速度,主流搜索引擎都使用搜索引擎缓存技术。
如图1示出的现有技术中的缓存架构示意图,当前比较典型的缓存方案,其详细流程如下:
1)缓存数据自动淘汰或者自动按照设定时间过期,比如5分钟数据过期;
2)搜索层失败的结果不缓存,否则搜索层的失败率会被放大;
3)命中缓存直接返回缓存数据给接入层;
4)未命中缓存,则访问搜索层服务获取搜索结果,成功获取到结果之后,写入缓存并返回数据给接入层。
现有的缓存方案,缓存系统的命中率不高,使得搜索服务的延迟较大,影响了数据搜索的时效性。
发明内容
本发明实施例所要解决的技术问题在于,提供一种缓存处理方法以及一种缓存处理装置,解决现有技术中缓存系统的命中率不高,使得搜索服务的延迟较大,影响了数据搜索的时效性的技术问题。
为了解决上述技术问题,本发明实施例第一方面公开了一种缓存处理方法,包括:
接收搜索请求,并根据所述搜索请求查看是否命中缓存数据;
在命中缓存数据的情况下,检测命中的缓存数据是否过期;
在所述命中的缓存数据过期的情况下,则输出所述命中的缓存数据;在所述命中的缓存数据没有过期的情况下,分析所述命中的缓存数据是否在预设的最大过期期限内;
在所述命中的缓存数据在预设的最大过期期限内的情况下,则输出所述命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,根据获取到的所述搜索结果写入缓存;在所述命中的缓存数据不在预设的最大过期期限内的情况下,则通过搜索层服务获取所述搜索结果,并根据获取到的所述搜索结果输出数据。
结合第一方面,在第一种可能的实现方式中,还包括:
根据上一次搜索层服务的失败率,按照预设时间间隔更新当前所述搜索层服务的失败率。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据所述搜索请求查看是否命中缓存数据之后,还包括:
在没有命中缓存数据的情况下,通过搜索层服务获取所述搜索结果,根据获取到的所述搜索结果输出数据,并根据获取到的所述搜索结果写入缓存;
所述根据获取的所述搜索结果写入缓存,包括:
在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,将所述搜索失败的结果写入缓存。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,包括:
判断当前所述搜索层服务的失败率是否大于预设阈值;
在大于预设阈值的情况下,以目标概率来计算本次是否触发更新缓存数据;所述目标概率为指示不触发更新缓存数据的概率,所述目标概率大于当前所述搜索层服务的失败率;
当计算出本次触发更新缓存数据时,通过搜索层服务获取搜索结果。
结合第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述根据获取到的所述搜索结果输出数据,包括:
在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,输出所述命中的缓存数据,并不将所述搜索失败的结果写入缓存;
在获取的所述搜索结果不为搜索失败的结果的情况下,输出获取到的所述搜索结果。
本发明实施例第二方面公开了一种缓存处理装置,包括:
接收查看模块,用于接收搜索请求,并根据所述搜索请求查看是否命中缓存数据;
过期检测模块,用于在命中缓存数据的情况下,检测命中的缓存数据是否过期;
检测处理模块,用于在所述命中的缓存数据过期的情况下,则输出所述命中的缓存数据;在所述命中的缓存数据没有过期的情况下,分析所述命中的缓存数据是否在预设的最大过期期限内;
分析处理模块,用于在所述命中的缓存数据在预设的最大过期期限内的情况下,则输出所述命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,根据获取到的所述搜索结果写入缓存;在所述命中的缓存数据不在预设的最大过期期限内的情况下,则通过搜索层服务获取所述搜索结果,并根据获取到的所述搜索结果输出数据。
结合第二方面,在第一种可能的实现方式中,还包括:
失败率更新模块,用于根据上一次搜索层服务的失败率,按照预设时间间隔更新当前所述搜索层服务的失败率。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
搜索输出模块,用于在所述接收查看模块没有命中缓存数据的情况下,通过搜索层服务获取所述搜索结果,根据获取到的所述搜索结果输出数据,并根据获取到的所述搜索结果写入缓存;
所述搜索输出模块或所述分析处理模块根据获取到的所述搜索结果写入缓存时,具体用于:在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,将所述搜索失败的结果写入缓存。
结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述分析处理模块包括:
阈值判断单元,用于在所述分析处理模块输出所述命中的缓存数据的情况下,判断当前所述搜索层服务的失败率是否大于预设阈值;
计算更新单元,用于在大于预设阈值的情况下,以目标概率来计算本次是否触发更新缓存数据;所述目标概率为指示不触发更新缓存数据的概率,所述目标概率大于当前所述搜索层服务的失败率;
更新搜索单元,用于当计算出本次触发更新缓存数据时,通过搜索层服务获取搜索结果。
结合第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,或者第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述分析处理模块包括:
第一输出单元,用于在通过搜索层服务获取所述搜索结果后,在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,输出所述命中的缓存数据,并不将所述搜索失败的结果写入缓存;
第二输出单元,用于在通过搜索层服务获取所述搜索结果后,在获取的所述搜索结果不为搜索失败的情况下,将输出获取到的所述搜索结果。
实施本发明实施例,当命中缓存数据时,检测该数据是否过期,若不过期,则直接返回该命中的缓存数据,若过期,则分析该数据是否在预设的最大过期期限内,若分析是,则同样输出或返回该命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,然后根据获取到的该搜索结果写入缓存,实现了在命中缓存之后可以先把过期时间不久的缓存数据输出或返回给用户,再继续后面的业务逻辑,并更新缓存,也就是说输出或返回用户数据和更新缓存可以同时进行,解决现有技术中缓存系统的命中率不高,使得搜索服务的延迟较大,影响了数据搜索的时效性的技术问题;另外,本发明实施例还可以增加缓存对后端过载情况的考虑,当后端过载时,不会发生大量请求穿透缓存到达底层服务的情况,避免了现有技术中如果底层服务已经过载,使得缓存的命中率因为后端的服务较大的失败率而急剧下降的问题,以及大量的用户请求穿透缓存到达底层服务,加剧了底层服务过载的问题;通过缓存失败的结果过滤用户因为0结果导致重试的搜索请求,并尽量使用过期的缓存数据输出或返回给用户,从而让搜索引擎流量减少,以有时间恢复到正常的处理能力,达到高可用的效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的缓存架构示意图;
图2是本发明实施例公开的一种缓存处理方法的应用场景构架示意图;
图3是本发明实施例提供的缓存处理方法的流程示意图;
图4是本发明提供的缓存处理方法的另一实施例的流程示意图;
图5是本发明实施例提供的缓存处理装置的结构示意图;
图6是本发明提供的缓存处理装置的另一实施例的结构示意图;
图7是本发明实施例提供的分析处理模块的结构示意图;
图8是本发明提供的分析处理模块的另一实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更好理解本发明实施例公开的一种缓存处理方法及装置,下面先对本发明实施例适用的应用场景进行描述。请参阅图2,图2是本发明实施例公开的一种缓存处理方法的应用场景构架示意图。如图2所示,用户可以通过用户设备连接网络,进行所需的数据搜索;服务器接收到用户设备的搜索请求后,为用户设备提供搜索服务,并向用户设备返回搜索数据。通过本发明实施例提供的缓存处理方法,实现了在命中缓存之后可以先把过期时间不久的缓存数据返回给用户,再继续后面的业务逻辑,并更新缓存,也就是说返回用户数据和更新缓存可以同时进行,解决现有技术中缓存系统的命中率不高,使得搜索服务的延迟较大,影响了数据搜索的时效性的技术问题。
本发明实施例中,用户设备包括但不限于个人计算机、移动电话、移动电脑、平板电脑、个人数字助理(Personal Digital Assistant,PDA)、媒体播放器、智能电视、智能手表、智能眼镜、智能手环等具有连接网络进行数据搜索的设备。
基于图2所示的应用场景构架,本发明实施例公开了的一种缓存处理方法。请参阅图3,图3是本发明实施例提供的缓存处理方法的流程示意图,可以包括以下步骤:
步骤S300:接收搜索请求,并根据所述搜索请求查看是否命中缓存数据;
具体地,服务器接收到用户通过用户设备发送的搜索请求,那么该服务器响应该搜索请求来请求缓存数据,即服务器端的接入层在接收搜索请求后,逻辑层可以响应该搜索请求来请求缓存数据,查看是否命中缓存数据,当命中,则执行步骤S302,当没有命中,则可以通过搜索层服务来获取搜索结果,并输出或返回该搜索结果。
步骤S302:检测命中的缓存数据是否过期;
具体地,可以预先设置缓存更新时间Ta,该Ta即为缓存数据更新的时间,即每隔Ta时间长度更新缓存;那么可以通过记录当前时间和缓存数据之间的时间间隔t,来检测命中的数据是否过期,若t小于该Ta,则检测为不过期,直接执行步骤S304,若t大于该Ta,则检测为过期,执行步骤S306。
步骤S304:输出所述命中的缓存数据;
具体地,服务器将缓存中命中的缓存数据直接输出或返回给用户设备。
步骤S306:分析所述命中的缓存数据是否在预设的最大过期期限内;
具体地,可以预先设置最大过期期限Tb(也称为异步加速时间),该Tb即为能容忍的数据最大过期时间,当检测出命中的缓存数据过期后,可以进一步分析该命中的缓存数据是否在该最大过期期限内,若分析为是,则执行步骤S308,若分析为否,则执行步骤S310。
步骤S308:输出所述命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,根据获取到的所述搜索结果写入缓存;
具体地,服务器可以预先设置更新缓存数据的条件,该条件包括若命中的缓存数据虽然为超期数据,但仍然在该最大过期期限内,那么即触发更新缓存数据;即步骤S308在输出或返回该命中的缓存数据的同时,无条件触发更新缓存数据。该条件还可以包括若命中的缓存数据虽然为超期数据,但仍然在该最大过期期限内时,进一步考虑当前搜索层服务的是否过载或是否出现异常,根据当前搜索层服务的状态来触发是否更新缓存数据,等等。
需要说明的是,根据获取到的搜索结果写入缓存可以包括,将搜索层服务进行搜索的当前时间、搜索结果状态指示信息以及搜索结果的数据内容一起写入缓存系统。本发明实施例中的搜索结果状态指示信息可以包括好结果缓存状态、坏结果缓存状态或者半好半坏缓存状态等等,该好结果缓存状态表征搜索引擎输出或返回正常结果的缓存数据,该坏结果缓存状态表征访问搜索引擎失败输出或返回的数据,等等。
步骤S310:则通过搜索层服务获取所述搜索结果,并根据获取到的所述搜索结果输出数据。
具体地,当命中的缓存数据不在该最大过期期限内时,表明该命中的缓存数据到达了在缓存系统的失效删除时间,即可以认为该命中的缓存数据过期太久了,可以忽略该命中的缓存数据,并触发通过搜索层服务获取搜索结果,然后根据获取到的该搜索结果输出或返回数据,包括直接输出或返回搜索结果给用户设备,也可以包括若当前搜索层的过载情况严重或异常严重时,仍然输出或返回该命中的缓存数据,等等。
需要说明的是,本发明图3示出的缓存处理方法,相当于异步缓存方法,在命中的缓存数据虽然过期,但仍然在最大过期期限内时,输出或返回该命中的缓存数据,并异步触发搜索层服务来获取搜索结果,并写入缓存,以完成更新缓存数据的步骤,也就是说输出或返回用户数据和更新缓存可以同时进行。实现了在命中缓存之后可以先把过期时间不久的缓存数据输出或返回给用户,再继续后面的业务逻辑,并更新缓存,也就是说输出或返回用户数据和更新缓存可以同时进行,解决现有技术中缓存系统的命中率不高,使得搜索服务的延迟较大,影响了数据搜索的时效性的技术问题。
进一步地,如图4示出的本发明提供的缓存处理方法的另一实施例的流程示意图,可以包括如下步骤:
步骤S400:根据上一次搜索层服务的失败率,按照预设时间间隔更新当前所述搜索层服务的失败率;
具体地,可以设置一个监控系统,逻辑层的所有机器都上报它对搜索层服务的访问的状态,可以包括成功或者失败的状态以及访问的耗时情况;同时,该监控系统可以隔预设时间间隔来收集搜索层的总体的状态,包括搜索层的总体失败率和平均耗时、成功平均耗时和失败平均耗时等;监控系统把这些状态表同步给每一台部署了逻辑层服务的机器;这样每个逻辑层的机器都有了搜索层服务的最近时间间隔的失败率的情况。逻辑层服务可以每隔该预设时间间隔更新一次搜索层服务的失败率(例如,失败率即为Ra),那么即将更新的搜索层服务的失败率Ra可以为当前搜索层服务的失败率Ra*0.8加上上一次搜索层服务的失败率Ra*0.2;
可理解的是,初始的Ra=0.0。本发明实施例以预设时间间隔为1秒为例,那么,即将更新的下一秒搜索层服务的失败率Ra=当前秒的Ra*0.8+上一秒的Ra*0.2。
需要说明的是,本发明各个实施例中更新搜索层服务的失败率Ra不限于上述举例,还可以是当前搜索层服务的失败率Ra*0.7加上上一次搜索层服务的失败率Ra*0.3,等等,本发明不做限制,只要是根据上一次搜索层服务的失败率来进行更新即可。
步骤S402:根据接收到的搜索请求查看是否命中缓存数据;
具体地,服务器端的接入层在接收搜索请求后,逻辑层可以响应该搜索请求来请求缓存数据,查看是否命中缓存数据,当命中,则执行步骤S402,当没有命中,则执行步骤S428。
步骤S404:检测命中的缓存数据是否过期;
当检测为否时,执行步骤S406;当检测为是时,执行步骤S408;
步骤S406:输出所述命中的缓存数据;
步骤S408:分析所述命中的缓存数据是否在预设的最大过期期限内;
具体地,当分析为是时,则执行步骤S410,当分析为否时,执行步骤S422;
步骤S410:输出所述命中的缓存数据,并判断当前所述搜索层服务的失败率是否大于预设阈值;
具体地,当判断大于预设阈值,则执行步骤S412;当判断不大于预设阈值,则执行步骤S420;本发明实施例中的预设阈值可以为5%,但本发明不限定该预设阈值的大小,研发人员可以根据各业务的不同或者经验来设置该预设阈值。
步骤S412:以目标概率来计算本次是否触发更新缓存数据;
具体地,本发明实施例中的目标概率为指示不触发更新缓存数据的概率,所述目标概率大于当前所述搜索层服务的失败率;当计算出本次触发更新缓存数据时,执行步骤S414,当计算出本次不触发更新缓存数据时,执行步骤S418;
需要说明的是,该目标概率可以但不限于当前所述搜索层服务的失败率Ra*2;研发人员可以根据各业务的不同或者经验来设置该目标概率。
步骤S414:通过搜索层服务获取搜索结果;
步骤S416:当获取的所述搜索结果为搜索失败的结果,将所述搜索失败的结果写入缓存;
步骤S418:不触发更新缓存数据;
步骤S420:通过搜索层服务获取搜索结果,并将搜索结果写入缓存;
步骤S422:判断当前所述搜索层服务的失败率是否大于预设阈值;
具体地,当判断大于预设阈值,则执行步骤S424;当判断不大于预设阈值,则执行步骤S420;
步骤S424:通过搜索层服务获取所述搜索结果;
步骤S426:当获取的所述搜索结果为搜索失败的结果,则输出所述命中的缓存数据,并不将所述搜索失败的结果写入缓存;当获取的所述搜索结果不为搜索失败的结果,则将输出获取到的所述搜索结果;
具体地,当引擎层服务发生过载情况或其他异常时,本发明实施例采用输出或返回过期缓存数据给用户设备,而不采用输出或返回失败的结果(如0结果);并不将搜索层服务(即引擎层服务)获取的0结果写入缓存,以使在引擎层恢复之前,一直都可以输出或返回过期缓存数据,进一步提高用户使用体验。
步骤S428:判断当前所述搜索层服务的失败率是否大于预设阈值;
具体地,当判断大于预设阈值,则执行步骤S430;当判断不大于预设阈值,则执行步骤S432;
步骤S430:通过搜索层服务获取所述搜索结果,并输出获取到的所述搜索结果;当获取的所述搜索结果为搜索失败的结果,将所述搜索失败的结果写入缓存;
具体地,本发明实施例考虑到了引擎层服务发生过载情况或其他异常时,将获取的失败搜索结果也写入缓存,以过滤用户因为0结果导致重试的搜索请求,避免了现有技术中如果底层服务已经过载,使得缓存的命中率因为后端的服务较大的失败率而急剧下降的问题,以及大量的用户请求穿透缓存到达底层服务,加剧了底层服务过载的问题;并尽量使用过期的缓存数据输出或返回给用户,从而让搜索引擎流量减少,以有时间恢复到正常的处理能力,达到高可用的效果。
步骤S432:通过搜索层服务获取所述搜索结果,并输出获取到的所述搜索结果。
下面举例进行说明:比如缓存数据的过期时间为5分钟,最大过期期限为10分钟。用户设备通过网页或其它方式发起搜索请求(搜索“a”),那么服务器针对该搜索请求查看缓存,当命中缓存数据时(即缓存有关于搜索“a”的搜索结果“b”),判断该关于搜索“a”的搜索结果在缓存里时间是否超过了5分钟,若没有超过5分钟,则直接给用户设备输出该搜索结果“b”;若超过了5分钟,那么进一步分析是否超过10分钟,若没有超过10分钟,则先输出该搜索结果“b”,然后判断当前搜索层服务的失败率是否大于预设阈值(如5%),若不大于5%,则触发更新缓存数据;若大于5%,则以目标概率进一步是否触发更新缓存数据。
若超过了5分钟,进一步分析也超过10分钟,那么判断当前搜索层服务的失败率是否大于预设阈值(如5%),若不大于5%,则触发更新缓存数据;若大于5%,则通过搜索层服务获取搜索结果,并在若搜索结果失败时,输出上述命中的缓存数据,并不将该搜索结果写入缓存。若搜索结果不为失败,那么输出该搜索结果。
在服务器针对该搜索请求查看缓存,并没有命中缓存数据时,判断当前搜索层服务的失败率是否大于预设阈值(如5%),若不大于5%,则触发更新缓存数据;若大于5%,则通过搜索层服务获取搜索结果,并在若搜索结果失败时,输出上述命中的缓存数据,并不将该搜索结果写入缓存。若搜索结果不为失败,那么输出该搜索结果。
实施本发明实施例,当命中缓存数据时,检测该数据是否过期,若不过期,则直接返回该命中的缓存数据,若过期,则分析该数据是否在预设的最大过期期限内,若分析是,则同样返回该命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,然后根据获取到的该搜索结果写入缓存,实现了在命中缓存之后可以先把过期时间不久的缓存数据返回给用户,再继续后面的业务逻辑,并更新缓存,也就是说返回用户数据和更新缓存可以同时进行,解决现有技术中缓存系统的命中率不高,使得搜索服务的延迟较大,影响了数据搜索的时效性的技术问题;另外,本发明实施例还可以增加缓存对后端过载情况的考虑,当后端过载时,不会发生大量请求穿透缓存到达底层服务的情况,避免了现有技术中如果底层服务已经过载,使得缓存的命中率因为后端的服务较大的失败率而急剧下降的问题,以及大量的用户请求穿透缓存到达底层服务,加剧了底层服务过载的问题;通过缓存失败的结果过滤用户因为0结果导致重试的搜索请求,并尽量使用过期的缓存数据返回给用户,从而让搜索引擎流量减少,以有时间恢复到正常的处理能力,达到高可用的效果。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种缓存处理装置,下面结合附图来进行详细说明:
如图5示出的本发明实施例提供的缓存处理装置的结构示意图,缓存处理装置50可以包括:接收查看模块500、过期检测模块502、检测处理模块504和分析处理模块506,其中,
接收查看模块500用于接收搜索请求,并根据所述搜索请求查看是否命中缓存数据;
过期检测模块502用于在命中缓存数据的情况下,检测命中的缓存数据是否过期;
检测处理模块504用于在所述命中的缓存数据过期的情况下,则输出所述命中的缓存数据;在所述命中的缓存数据没有过期的情况下,分析所述命中的缓存数据是否在预设的最大过期期限内;
分析处理模块506用于在所述命中的缓存数据在预设的最大过期期限内的情况下,则输出所述命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,根据获取到的所述搜索结果写入缓存;在所述命中的缓存数据不在预设的最大过期期限内的情况下,则通过搜索层服务获取所述搜索结果,并根据获取到的所述搜索结果输出数据。
具体地,如图6示出的本发明提供的缓存处理装置的另一实施例的结构示意图,缓存处理装置50包括接收查看模块500、过期检测模块502、检测处理模块504和分析处理模块506外,还可以包括失败率更新模块508和搜索返回模块5010,其中,
失败率更新模块508,用于根据上一次搜索层服务的失败率,按照预设时间间隔更新当前所述搜索层服务的失败率。
搜索输出模块5010用于在接收查看模块500没有命中缓存数据的情况下,通过搜索层服务获取所述搜索结果,根据获取到的所述搜索结果输出数据,并根据获取到的所述搜索结果写入缓存;
搜索输出模块5010或分析处理模块506根据获取到的所述搜索结果写入缓存时,具体用于:在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,将所述搜索失败的结果写入缓存。
再进一步地,如图7示出的本发明实施例提供的分析处理模块的结构示意图,分析处理模块506可以包括:阈值判断单元5060、计算更新单元5062和更新搜索单元5064,其中,
阈值判断单元5060用于在输出所述命中的缓存数据的情况下,判断当前所述搜索层服务的失败率是否大于预设阈值;
计算更新单元5062用于在大于预设阈值的情况下,以目标概率来计算本次是否触发更新缓存数据;所述目标概率为指示不触发更新缓存数据的概率,所述目标概率大于当前所述搜索层服务的失败率;
更新搜索单元5064用于当计算出本次触发更新缓存数据时,通过搜索层服务获取搜索结果。
再进一步地,如图8示出的本发明提供的分析处理模块的另一实施例的结构示意图,分析处理模块506可以包括:第一输出单元5066和第二输出单元5068,其中,
第一输出单元5066用于在通过搜索层服务获取所述搜索结果后,在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,输出所述命中的缓存数据,并不将所述搜索失败的结果写入缓存;
第二输出单元5068用于在通过搜索层服务获取所述搜索结果后,在获取的所述搜索结果不为搜索失败的情况下,将输出获取到的所述搜索结果。
需要说明的是,本发明实施例中的缓存处理装置50包括但不限于个人计算机、移动电脑、平板电脑、移动电话、个人数字助理(Personal Digital Assistant,PDA)、智能电视、智能手表、智能眼镜、智能手环等可编写应用于互联网的代码的电子设备。可理解的是,缓存处理装置50中各模块的功能可对应参考上述各方法实施例中图1至图4任意实施例的具体实现方式,这里不再赘述。
综上所述,实施本发明实施例,当命中缓存数据时,检测该数据是否过期,若不过期,则直接返回该命中的缓存数据,若过期,则分析该数据是否在预设的最大过期期限内,若分析是,则同样返回该命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,然后根据获取到的该搜索结果写入缓存,实现了在命中缓存之后可以先把过期时间不久的缓存数据返回给用户,再继续后面的业务逻辑,并更新缓存,也就是说返回用户数据和更新缓存可以同时进行,解决现有技术中缓存系统的命中率不高,使得搜索服务的延迟较大,影响了数据搜索的时效性的技术问题;另外,本发明实施例还可以增加缓存对后端过载情况的考虑,当后端过载时,不会发生大量请求穿透缓存到达底层服务的情况,避免了现有技术中如果底层服务已经过载,使得缓存的命中率因为后端的服务较大的失败率而急剧下降的问题,以及大量的用户请求穿透缓存到达底层服务,加剧了底层服务过载的问题;通过缓存失败的结果过滤用户因为0结果导致重试的搜索请求,并尽量使用过期的缓存数据返回给用户,从而让搜索引擎流量减少,以有时间恢复到正常的处理能力,达到高可用的效果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种缓存处理方法,其特征在于,包括:
接收搜索请求,并根据所述搜索请求查看是否命中缓存数据;
在命中缓存数据的情况下,检测命中的缓存数据是否过期;
在所述命中的缓存数据过期的情况下,则输出所述命中的缓存数据;在所述命中的缓存数据没有过期的情况下,分析所述命中的缓存数据是否在预设的最大过期期限内;
在所述命中的缓存数据在预设的最大过期期限内的情况下,则输出所述命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,根据获取到的所述搜索结果写入缓存;在所述命中的缓存数据不在预设的最大过期期限内的情况下,则通过搜索层服务获取所述搜索结果,并根据获取到的所述搜索结果输出数据。
2.如权利要求1所述的方法,其特征在于,还包括:
根据上一次搜索层服务的失败率,按照预设时间间隔更新当前所述搜索层服务的失败率。
3.如权利要求2所述的方法,其特征在于,所述根据所述搜索请求查看是否命中缓存数据之后,还包括:
在没有命中缓存数据的情况下,通过搜索层服务获取所述搜索结果,根据获取到的所述搜索结果输出数据,并根据获取到的所述搜索结果写入缓存;
所述根据获取的所述搜索结果写入缓存,包括:
在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,将所述搜索失败的结果写入缓存。
4.如权利要求2所述的方法,其特征在于,所述在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,包括:
判断当前所述搜索层服务的失败率是否大于预设阈值;
在大于预设阈值的情况下,以目标概率来计算本次是否触发更新缓存数据;所述目标概率为指示不触发更新缓存数据的概率,所述目标概率大于当前所述搜索层服务的失败率;
当计算出本次触发更新缓存数据时,通过搜索层服务获取搜索结果。
5.如权利要求2-4任一项所述的方法,其特征在于,所述根据获取到的所述搜索结果输出数据,包括:
在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,输出所述命中的缓存数据,并不将所述搜索失败的结果写入缓存;
在获取的所述搜索结果不为搜索失败的结果的情况下,输出获取到的所述搜索结果。
6.一种缓存处理装置,其特征在于,包括:
接收查看模块,用于接收搜索请求,并根据所述搜索请求查看是否命中缓存数据;
过期检测模块,用于在命中缓存数据的情况下,检测命中的缓存数据是否过期;
检测处理模块,用于在所述命中的缓存数据过期的情况下,则输出所述命中的缓存数据;在所述命中的缓存数据没有过期的情况下,分析所述命中的缓存数据是否在预设的最大过期期限内;
分析处理模块,用于在所述命中的缓存数据在预设的最大过期期限内的情况下,则输出所述命中的缓存数据,并在符合触发更新缓存数据的条件下通过搜索层服务获取搜索结果,根据获取到的所述搜索结果写入缓存;在所述命中的缓存数据不在预设的最大过期期限内的情况下,则通过搜索层服务获取所述搜索结果,并根据获取到的所述搜索结果输出数据。
7.如权利要求6所述的装置,其特征在于,还包括:
失败率更新模块,用于根据上一次搜索层服务的失败率,按照预设时间间隔更新当前所述搜索层服务的失败率。
8.如权利要求7所述的装置,其特征在于,还包括:
搜索输出模块,用于在所述接收查看模块没有命中缓存数据的情况下,通过搜索层服务获取所述搜索结果,根据获取到的所述搜索结果输出数据,并根据获取到的所述搜索结果写入缓存;
所述搜索输出模块或所述分析处理模块根据获取到的所述搜索结果写入缓存时,具体用于:在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,将所述搜索失败的结果写入缓存。
9.如权利要求7所述的装置,其特征在于,所述分析处理模块包括:
阈值判断单元,用于在输出所述命中的缓存数据的情况下,判断当前所述搜索层服务的失败率是否大于预设阈值;
计算更新单元,用于在大于预设阈值的情况下,以目标概率来计算本次是否触发更新缓存数据;所述目标概率为指示不触发更新缓存数据的概率,所述目标概率大于当前所述搜索层服务的失败率;
更新搜索单元,用于当计算出本次触发更新缓存数据时,通过搜索层服务获取搜索结果。
10.如权利要求7-9任一项所述的装置,其特征在于,所述分析处理模块包括:
第一输出单元,用于在通过搜索层服务获取所述搜索结果后,在获取的所述搜索结果为搜索失败的结果,且当前所述搜索层服务的失败率大于预设阈值的情况下,输出所述命中的缓存数据,并不将所述搜索失败的结果写入缓存;
第二输出单元,用于在通过搜索层服务获取所述搜索结果后,在获取的所述搜索结果不为搜索失败的情况下,将输出获取到的所述搜索结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611198397.5A CN108228669B (zh) | 2016-12-22 | 2016-12-22 | 一种缓存处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611198397.5A CN108228669B (zh) | 2016-12-22 | 2016-12-22 | 一种缓存处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228669A true CN108228669A (zh) | 2018-06-29 |
CN108228669B CN108228669B (zh) | 2020-08-14 |
Family
ID=62656918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611198397.5A Active CN108228669B (zh) | 2016-12-22 | 2016-12-22 | 一种缓存处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228669B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190070A (zh) * | 2018-08-01 | 2019-01-11 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置、系统及应用服务器 |
CN110866053A (zh) * | 2019-10-16 | 2020-03-06 | 平安普惠企业管理有限公司 | 动态配置缓存期限的方法、装置、计算机设备及存储介质 |
CN112860794A (zh) * | 2021-02-03 | 2021-05-28 | 百果园技术(新加坡)有限公司 | 基于缓存的并发能力提升方法、装置、设备及存储介质 |
CN113608886A (zh) * | 2021-06-30 | 2021-11-05 | 北京新氧科技有限公司 | 一种函数接入缓存方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090019227A1 (en) * | 2007-07-12 | 2009-01-15 | David Koski | Method and Apparatus for Refetching Data |
CN104391862A (zh) * | 2014-10-23 | 2015-03-04 | 北京锐安科技有限公司 | 一种缓存数据更新方法及装置 |
CN105608115A (zh) * | 2015-12-11 | 2016-05-25 | 北京奇虎科技有限公司 | 数据获取方法与装置 |
-
2016
- 2016-12-22 CN CN201611198397.5A patent/CN108228669B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090019227A1 (en) * | 2007-07-12 | 2009-01-15 | David Koski | Method and Apparatus for Refetching Data |
CN104391862A (zh) * | 2014-10-23 | 2015-03-04 | 北京锐安科技有限公司 | 一种缓存数据更新方法及装置 |
CN105608115A (zh) * | 2015-12-11 | 2016-05-25 | 北京奇虎科技有限公司 | 数据获取方法与装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190070A (zh) * | 2018-08-01 | 2019-01-11 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置、系统及应用服务器 |
CN109190070B (zh) * | 2018-08-01 | 2021-10-15 | 北京奇艺世纪科技有限公司 | 一种数据处理方法、装置、系统及应用服务器 |
CN110866053A (zh) * | 2019-10-16 | 2020-03-06 | 平安普惠企业管理有限公司 | 动态配置缓存期限的方法、装置、计算机设备及存储介质 |
CN112860794A (zh) * | 2021-02-03 | 2021-05-28 | 百果园技术(新加坡)有限公司 | 基于缓存的并发能力提升方法、装置、设备及存储介质 |
CN113608886A (zh) * | 2021-06-30 | 2021-11-05 | 北京新氧科技有限公司 | 一种函数接入缓存方法、装置、电子设备及存储介质 |
CN113608886B (zh) * | 2021-06-30 | 2024-04-26 | 北京新氧科技有限公司 | 一种函数接入缓存方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108228669B (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110062025B (zh) | 数据采集的方法、装置、服务器及存储介质 | |
CN108228669A (zh) | 一种缓存处理方法及装置 | |
CN104301360B (zh) | 一种日志数据记录的方法、日志服务器及系统 | |
CN106503134B (zh) | 浏览器跳转至应用程序的数据同步方法及装置 | |
CN103441906B (zh) | 基于自主计算的代理缓存集群异常检测系统 | |
CN106685743A (zh) | 区块链集群处理系统和方法 | |
CN105306585B (zh) | 一种多数据中心的数据同步方法 | |
CN106095483A (zh) | 服务的自动化部署方法及装置 | |
CN105959235B (zh) | 分布式数据处理系统及方法 | |
CN103270499B (zh) | 日志存储方法及系统 | |
CN104601562B (zh) | 游戏服务器与数据库的交互方法和系统 | |
CN110535901A (zh) | 服务降级方法、装置、计算机设备及存储介质 | |
CN107800767A (zh) | 一种访问响应管理方法、服务器及计算机可读存储介质 | |
CN108694188A (zh) | 一种索引数据更新的方法以及相关装置 | |
CN102104494B (zh) | 元数据服务器、带外网络文件系统及其处理方法 | |
CN107301215A (zh) | 一种搜索结果缓存方法及装置、搜索方法及装置 | |
CN107623732A (zh) | 一种基于云平台的数据存储方法、装置、设备及存储介质 | |
CN107517110A (zh) | 一种分布式系统中单板配置自恢复方法及装置 | |
CN111177165A (zh) | 数据一致性检测的方法、装置及设备 | |
CN107544926A (zh) | 处理系统及其访存方法 | |
CN106991177A (zh) | 一种分布式环境下实时日志的无损采集方法及其系统 | |
CN104657358B (zh) | 实现网页程序离线缓存的方法和系统 | |
CN104991866B (zh) | Js程序的调试方法及装置 | |
CN108334549A (zh) | 一种设备数据存储方法、提取方法、存储平台及提取平台 | |
CN110502581A (zh) | 分布式数据库系统监测方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |