【具体实施方式】
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的缓存管理方法的流程示意图。如图1所示,该方法包括:
101、获取至少一个缓存中每个缓存的访问热度。
102、根据每个缓存的访问热度,从至少一个缓存中确定目标缓存。
103、在目标缓存失效之前,对目标缓存进行刷新操作。
具体的,为了提高缓存的处理能力,降低由于缓存失效引起缓存雪崩的概率,缓存管理装置采用预刷新缓存的方式,保证缓存在被请求时始终是有效的,避免缓存失效,意味着降低了由缓存失效引起缓存雪崩的概率。
预刷新缓存的方式是指在缓存失效之前,对缓存进行刷新操作。对缓存进行刷新操作实际上就是缓存重建的过程。缓存重建是指重新运算缓存,获取缓存最新的数值。例如,缓存重建可以是从数据库中重新获取用户Id(userId)为1的用户信息,并将重新获取的用户信息存储到缓存中。或者,缓存重建可以是从数据库中重新获取订单Id(orderId)=23232的订单信息,并将重新获取的订单信息存储到缓存中。
同时,为了避免对所有缓存均进行预刷新造成刷新成本较高,对系统性能影响较大等问题,缓存管理装置获取至少一个缓存中每个缓存的访问热度,根据访问热度,从至少一个缓存中确定需要进行预刷新的缓存(即目标缓存),之后,在目标缓存失效之前,对目标缓存进行刷新操作。
上述缓存的访问热度一定程度上代表了缓存的优先级。缓存的访问热度越大,意味着缓存的优先级越高。该优先级可以体现在缓存被请求的概率方面,或者可以体现在缓存被请求的时长方面等等。
本实施例基于缓存的访问热度,从至少一个缓存中确定需要进行预刷新的目标缓存,并在目标缓存失效之前,对目标缓存进行刷新操作,可以优先保证访问热度较大的缓存在被请求时始终保持有效,降低了失效缓存的比例,进而降低了由缓存失效引起缓存雪崩的概率,进而提高使用缓存技术的系统的处理速度。
在一可选实施方式中,获取至少一个缓存中每个缓存的访问热度的过程包括:根据每个缓存在当前生命周期内的访问次数和/或在当前生命周期内的最后访问时间,获得每个缓存的访问影响时长;根据每个缓存的访问影响时长和每个缓存当前生命周期的时长,获得每个缓存的访问热度。
其中,每个缓存自创建开始是有有效期的,该有效期被称为生命周期,例如可以是半小时、一小时、四十分钟等。在实际应用中,缓存的生命周期可由创建时间和失效时间表示,即失效时间与创建时间之差即为该缓存的生命周期。缓存失效后,会被重建,重建后的缓存会开始新的生命周期。
每个缓存在当前生命周期内的访问次数是指每个缓存在当前生命周期内被访问的次数;相应的,每个缓存在当前生命周期内的最后访问时间是指每个缓存在当前生命周期内最后一次被访问的时间,例如可能是xxx日xxx时xxx分。
其中,缓存管理装置可以根据每个缓存在当前生命周期内的访问次数和最后访问时间中的至少一个,获得每个缓存的访问影响时长。这里访问影响时长是指缓存被访问所影响到的时间长度。
其中,缓存管理装置可以仅根据每个缓存在当前生命周期内的访问次数,获得访问影响时长。例如,缓存管理装置可以将访问次数做数值处理后的结果作为访问影响时长,一般来说访问次数越多,访问影响时长就越长。
缓存管理装置可以仅根据每个缓存当前生命周期内的最后访问时间,获得访问影响时长。例如,缓存管理装置可以用每个缓存在当前生命周期内的最后访问时间减轻每个缓存当前生命周期的创建时间,获得每个缓存的访问影响时长。
缓存管理装置也可以同时根据每个缓存当前生命周期内的访问次数和最后访问时间,获得访问影响时长。例如,缓存管理装置可以对每个缓存当前生命周期内的访问次数和最后访问时间做数值处理,将处理结果作为访问影响时长。
基于上述,缓存管理装置可以用每个缓存的访问影响时长与每个缓存的当前生命周期的时长相除,以获得每个缓存的访问热度,该访问热度实际上是指访问缓存产生的影响时间在缓存的生命周期中的占比。
值得说明的是,在缓存管理装置用每个缓存在当前生命周期内的最后访问时间减轻每个缓存当前生命周期的创建时间,获得每个缓存的访问影响时长的情况下,每个缓存的访问热度会动态变化,每一次新的访问都会提升对应缓存的优先级;相应的,如果缓存长时间不被访问,那么其优先级就会很低。
在一可选实施方式中,上述从至少一个缓存中确定目标缓存的一种实施方式包括:
根据每个缓存的访问热度和每个缓存的剩余生存时间,从至少一个缓存中确定至少一个候选缓存,其中,每个缓存的剩余生存时间是指当前时间距离每个缓存的当前生命周期的失效时间的时间间隔;从至少一个候选缓存中,确定目标缓存。
具体的,缓存管理装置可以根据每个缓存的访问热度和每个缓存的剩余生存时间,从至少一个缓存中确定剩余生存时间小于预设时间阈值且访问热度大于或等于预设热度阈值的缓存作为候选缓存。其中,候选缓存可以是一个或多个。
在获得候选缓存之后,缓存管理装置可以进一步从候选缓存中获取目标缓存。例如,一种简单的实施方式为:缓存管理装置直接将所有候选缓存作为目标缓存。又例如,缓存管理装置用于进行缓存预刷新的资源是有限的,有可能无法对所有候选资源均进行预刷新处理,于是可以对至少一个候选缓存进行筛选,从中选出目标缓存。
具体的,缓存管理装置可以判断对至少一个候选缓存进行刷新操作所需的第一刷新资源量是否大于指定的第二刷新资源量;其中,指定的第二刷新资源量即所分配的用于执行缓存预刷新的资源的数量。若第一刷新资源量大于第二刷新资源量,则根据至少一个候选缓存中每个候选缓存的访问热度,从至少一个候选缓存中确定目标缓存;例如,可以优先从至少一个候选缓存中选择访问热度最大的前N个候选缓存作为目标缓存,其中对N个候选缓存进行刷新操作所需的刷新资源量小于第二刷新资源量。N为小于至少一个候选缓存的总数M的自然数,M为自然数。若第一刷新资源量小于或等于第二刷新资源量,将至少一个候选缓存作为目标缓存。
进一步,上述优先从M个候选缓存中选择N个访问热度最大的候选缓存作为目标缓存的一种实施方式包括但不限于:
第一步:把每个缓存的访问热度作为权值,构建最小堆,最小堆中的每个节点对应一个缓存;
第二步:从最小堆中,移除根节点对应的缓存,并更新第一刷新资源量为对移除根节点对应的缓存后剩余其他缓存进行刷新所需的资源量;
第三步:如果当前第一刷新资源量小于或等于第二刷新资源量,则将最小堆中剩余节点对应的缓存作为目标缓存,否则跳到第二步继续执行,直到当前第一刷新资源量小于或等于第二刷新资源量为止。
在一可选实施方式中,上述刷新资源量可以是刷新耗时来体现。对每个缓存来说,完成对其刷新所需的时间简称为该缓存的刷新耗时,不同缓存的刷新耗时可以相同也可以不相同。缓存管理装置可以启动多个线程,以用于对缓存进行刷新操作,并可以预先设定线程之间的扫描间隔。
基于上述。缓存管理装置在判断对至少一个候选缓存进行刷新操作所需的第一刷新资源量是否大于指定的第二刷新资源量之前,还包括:将每个候选缓存的刷新耗时进行相加,以获得作为第一刷新资源量的第一刷新耗时;以及将用于进行刷新操作的线程数目和线程扫描间隔相乘,以获得作为第二刷新资源量的第二刷新耗时。
在确定目标缓存之后,缓存管理装置可以在目标缓存失效之前,对其进行刷新处理。具体的,缓存管理装置可以将目标缓存均分给多个线程,由多个线程对所分配的目标缓存进行刷新操作。进一步,缓存管理装置可以根据每个目标缓存的刷新耗时将所有目标缓存均分给多个线程,使得每个线程的刷新时间基本相同;或者,可以按照目标缓存的个数将目标缓存均分给多个线程,使得每个线程刷新的目标缓存的数量基本相同,等等。
由上述可见,本实施例可以在目标缓存失效之前,对其进行刷新操作,可以保证目标缓存在被请求时始终保持有效,降低了失效缓存的比例,进而降低了由缓存失效引起缓存雪崩的概率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图2为本发明一实施例提供的缓存管理装置的结构示意图。如图2所示,该装置包括:第一获取模块21、确定模块22和刷新模块23。
第一获取模块21,用于获取至少一个缓存中每个缓存的访问热度。
确定模块22,与第一获取模块21连接,用于根据第一获取模块21获取的每个缓存的访问热度,从至少一个缓存中确定目标缓存。
刷新模块23,与确定模块22连接,用于在确定模块22确定的目标缓存失效之前,对目标缓存进行刷新操作。
在一可选实施方式中,如图3所示,第一获取模块21的一种实现结构包括:第一获取单元211和第二获取单元212。
第一获取单元211,用于根据每个缓存在当前生命周期内的访问次数和/或在当前生命周期内的最后访问时间,获得每个缓存的访问影响时长。
第二获取单元212,与第一获取单元211连接,用于根据第一获取单元211获取的每个缓存的访问影响时长和每个缓存当前生命周期的时长,获得每个缓存的访问热度。
进一步,第一获取单元211具体可用于用每个缓存在当前生命周期内的最后访问时间减轻每个缓存当前生命周期的创建时间,获得每个缓存的访问影响时长。
在一可选实施方式中,如图3所示,确定模块22的一种实现结构包括:第一确定单元221和第二确定单元222。
第一确定单元221,与第二获取单元212连接,用于根据第二获取单元212获取的每个缓存的访问热度和每个缓存的剩余生存时间,从至少一个缓存中确定至少一个候选缓存,每个缓存的剩余生存时间是指当前时间距离每每个缓存的当前生命周期的失效时间的时间间隔。
第二确定单元222,与第一确定单元221连接,用于从第一确定单元221确定的至少一个候选缓存中,确定目标缓存。
进一步,第二确定单元222具体可用于:
判断对至少一个候选缓存进行刷新操作所需的第一刷新资源量是否大于指定的第二刷新资源量;
若第一刷新资源量大于第二刷新资源量,则根据至少一个候选缓存中每个候选缓存的访问热度,从至少一个候选缓存中确定目标缓存;
若第一刷新资源量小于或等于第二刷新资源量,将至少一个候选缓存作为目标缓存。
基于上述,在一可选实施方式中,如图3所示,该缓存管理装置还包括:第二获取模块24。
第二获取模块24,与第二确定单元222连接,用于述每个候选缓存的刷新耗时进行相加,以获得作为第一刷新资源量的第一刷新耗时,并将用于进行刷新操作的线程数目和线程扫描间隔相乘,以获得作为第二刷新资源量的第二刷新耗时。第二获取模块24还用于向第二确定单元222提供第一刷新耗时和第二刷新耗时。
在一可选实施方式中,刷新模块23具体可用于通过上述线程数目所限定的多个线程对目标缓存进行刷新。
本实施例提供的缓存管理装置,根据每个缓存的访问热度,从至少一个缓存中确定目标缓存,并在目标缓存失效之前,对目标缓存进行刷新操作,这样相当于对目标缓存进行预刷新,使得目标缓存在被请求时始终是有效的,提供缓存的处理能力,降低发生缓存雪崩的概率,进而提高使用缓存技术的系统的处理速度。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。