缓存管理方法与装置与流程

文档序号:14677399发布日期:2018-06-12 21:41阅读:244来源:国知局
缓存管理方法与装置与流程

本公开涉及计算机技术领域,具体而言,涉及一种缓存管理方法与装置。



背景技术:

在目前的业务系统设计中,往往需要使用缓存加速数据的访问,提高系统的处理能力。存放于缓存中的数据通常是变化不频繁的数据,或者时效性在一段时间内变化不大的数据,例如代码表或统计结论。

缓存中的数据是数据库中数据视图的一种投射,往往有过期时间,一旦过期,缓存会自动清除数据;此外,如果手工修改了数据库或者变更了数据没有通知缓存,缓存中的数据会和真正的数据不一致。此时,如果对缓存发起读取请求,则会造成无法成功读取目标数据的情况。读取请求能够成功读取目标数据的比例即为缓存命中率。决定缓存使用效率最重要指标是缓存命中率,缓存命中率越高,缓存所起到的作用才会越大。

在现实中,缓存命中率往往由缓存提供者保存,开发或运维人员通常无法获取缓存命中率,也无法通过对缓存命中率细节的了解开发对缓存命中率的提高策略。因此,需要一种既能够查看缓存命中率,又能够提高缓存命中率的缓存管理方法。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开的目的在于提供一种缓存管理方法与缓存管理装置,用于至少在一定程度上克服相关技术中无法获取缓存命中率细节的问题。

根据本公开实施例的第一方面,提供一种缓存管理方法,包括:获取针对目标数据的缓存访问请求;根据缓存访问请求以及请求处理结果更新缓存访问参数;根据所述缓存访问参数确定是否在缓存中清除所述目标数据。

可选的,还包括:所述根据缓存访问请求以及请求处理结果更新缓存访问参数包括:

判断所述缓存访问请求的属性是读取请求还是写入请求;

如果是读取请求,对所述缓存访问请求的目标数据的读取次数加1;

如果是写入请求,对所述目标数据的写入次数加1。

可选的,所述根据所述缓存访问参数确定是否在缓存中清除所述目标数据括:

判断所述目标数据的所述写入次数与所述读取次数的比值是否大于第二阈值;

如果是,将所述目标数据的标识符写入待审核数据库。

可选的,所述根据缓存访问请求以及请求处理结果更新缓存访问参数包括:

判断所述缓存访问请求的属性是读取请求还是写入请求;

如果是读取请求,对所述缓存访问请求的目标数据的读取次数加1;

判断所述读取请求是否成功读取所述目标数据;

如果成功读取所述目标数据,对所述目标数据的命中次数加1。

可选的,所述根据所述缓存访问参数确定是否在缓存中清除所述目标数据包括:

判断所述目标数据的所述命中次数与所述读取次数的比值是否小于第二阈值;

如果是,将所述目标数据的标识符写入待审核数据库。

可选的,根据所述缓存访问参数确定是否在缓存中清除所述目标数据包括:

接收所述待审核数据库发送的数据清除消息,所述数据清除消息包括待清除缓存数据的识别符;

清除与所述识别符对应的缓存数据。

可选的,还包括:根据所述缓存访问参数确定是否在缓存中清除所述目标数据相关的缓存数据。

可选的,还包括:根据数据库的改动实时更新与所述数据库中的改动数据对应的缓存数据。

可选的,根据数据库的改动实时更新与所述数据库中的改动数据对应的缓存数据包括:

监听与缓存对应的数据库的变化日志,判断所述数据库中的数据是否有改动;如果有改动,根据所述改动确定目标数据以及所述目标数据的更新值;根据所述目标数据以及所述更新值更新缓存数据。

根据本公开实施例的第二方面,提供一种缓存管理装置,包括:

请求拦截模块,设置为获取针对目标数据的缓存访问请求;

参数获取模块,设置为根据缓存访问请求以及请求处理结果更新缓存访问参数;

数据调整模块,设置为根据所述缓存访问参数确定是否在缓存中清除所述目标数据。

根据本公开的第三方面,提供一种缓存管理装置,包括:存储器;以及耦合到所属存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上述任意一项所述的方法。

根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项所述的缓存管理方法。

本公开的缓存管理方法通过拦截缓存访问请求,并根据缓存访问请求的属性和处理结果获取缓存访问参数,从而根据缓存访问参数判断是否将数据移出缓存,可以在提供缓存命中率外部查看功能的同时删除不适合放入缓存的数据,从而提高缓存命中率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出本公开示例性实施例中缓存管理方法的流程图。

图2示意性示出本公开示例性实施例中缓存管理方法的另一种流程图。

图3示意性示出本公开示例性实施例中缓存管理方法的再一种流程图。

图4示意性示出本公开一个示例性实施例中一种缓存管理装置的方框图。

图5示意性示出本公开一个示例性实施例中另一种缓存管理装置的方框图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。

此外,附图仅为本公开的示意性图解,图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

下面结合附图对本公开示例实施方式进行详细说明。

图1示意性示出本公开示例性实施例中缓存管理方法的流程图。参考图1,缓存管理方法100可以包括:

步骤S102,获取针对目标数据的缓存访问请求。

步骤S104,根据缓存访问请求以及请求处理结果更新缓存访问参数。

步骤S106,根据所述缓存访问参数确定是否在缓存中清除所述目标数据。

本公开的缓存管理方法通过拦截缓存访问请求,并根据缓存访问请求的属性和处理结果获取缓存访问参数,从而根据缓存访问参数判断是否将数据移出缓存,可以在提供缓存命中率外部查看功能的同时删除不适合放入缓存的数据,提高缓存命中率。

下面,对缓存管理方法100的各步骤进行详细说明。

在步骤S102,获取针对目标数据的缓存访问请求。

首先,可以通过例如AOP代理等方法拦截缓存访问请求。在本公开的其他实施例中,也可以使用其他工具对缓存访问请求进行拦截,本公开对此不作特殊限定。以客户管理系统的缓存为例,缓存访问请求例如可以为以客户账号或证件号为标识请求访问客户信息的请求。

在步骤S104,根据缓存访问请求以及请求处理结果更新缓存访问参数。

接下来,判断缓存访问请求的属性、目标数据以及处理结果,从而更新缓存访问参数。在一些实施例中,每个目标数据的缓存访问参数至少可以包括:写入次数、读取次数以及命中次数。

其中,写入次数是目标数据的键名(key)被写入键值(value)的次数,读取次数是目标数据的键名被读取键值的次数,命中次数是根据目标数据的键名成功读取到键值的次数。由于与缓存对应的外部数据库的更新可能与缓存数据的更新有误差,或由于缓存数据库定时清理过期数据导致的缓存数据,可能会造成包含键名的缓存访问请求读取缓存数据时有可能读不到键值,即命中次数一般小于读取次数。

图2示意性示出本公开示例性实施例中缓存管理方法的另一种流程图。参考图2,在一些实施例中,步骤S104可以包括:

步骤S1041,判断所述缓存访问请求的属性是读取请求还是写入请求;

步骤S1042,如果是读取请求,对所述缓存访问请求的目标数据的读取次数加1;

步骤S1043,如果是写入请求,对所述目标数据的写入次数加1。

在另一些实施例中,步骤S104还可以包括::

步骤S1041,判断所述缓存访问请求的属性是读取请求还是写入请求;

步骤S1042,如果是读取请求,对所述缓存访问请求的目标数据的读取次数加1;

步骤S1044,判断所述读取请求是否成功读取所述目标数据;

步骤S1045,如果成功读取所述目标数据,对所述目标数据的命中次数加1。

判断是否成功读取所述目标请求例如可以根据缓存给缓存访问请求返回的反馈消息来判断。

通过记录各数据的缓存访问参数,可以直接计算各目标数据的键名对应的缓存命中率以及写入读出比等细节数据,克服相关技术无法查看缓存命中率的缺点。

在步骤S106,根据所述缓存访问参数确定是否在缓存中清除所述目标数据。

在一些实施例中,步骤S106还可以包括:

步骤S1061,判断所述目标数据的所述命中次数与所述读取次数的比值是否小于第一阈值;

步骤S1063,如果是,将所述目标数据的标识符写入待审核数据库。

目标数据的缓存命中率(hit times/total times)的计算公式为命中率=命中次数/读取次数。

该命中率是站在用户的角度看整个缓存的命中率,分开单独看外部每个缓存产品自己的命中率都是不准确的。该命中率低说明该目标数据的存储时间可能已经超过缓存的数据过期时间,被删除了。这种需要长期存储的数据占用缓存空间不利于合理利用缓存,因此,可以将该目标数据的识别符写入待审核数据库,通过人工审核或其他方式确定是否需要将该目标数据移出缓存。判断命中率是否过低的第一阈值可以根据实际情况自行设置,一般而言,命中率低于20%则可以判断该数据的命中率已经过低,需要人工审核是否需要存储于缓存中。

例如,当缓存管理方法100用于管理客户信息的缓存时,一名客户的某些数据访问命中率过低,则可以说明该客户的数据需要长期存储,不宜占用缓存资源。

在一些实施例中,还可以通过判断缓存命中率是否高于预设值来识别活跃数据。如上例所示,如果一名客户的某些数据的访问命中率高于预设值,则可以判断其为数据经常被访问的活跃用户,将其标识出来,以便进行进一步的重点客户管理。

可选的,步骤S106包括:

步骤S1062,判断所述目标数据的所述写入次数与所述读取次数的比值是否大于第二阈值;

步骤S1063,如果是,将所述目标数据的标识符写入待审核数据库。

产出比(put times/total times)的计算公式为产出比=写入次数/读取次数。

该指标可以指示哪些数据的更改次数远大于读取次数。这种频繁改动、很少读取的数据不适合占用缓存空间,当该产出比大于第二阀值时,可以将该目标数据的识别符写入待审核数据库,通过人工审核或其他方式确定是否需要将该目标数据移出缓存。

通过获取缓存访问参数,并根据这些缓存访问参数计算一些指标,可以更好地对缓存数据进行分析,优化数据存储策略,提高缓存命中率,提高运营效率。此外,还可以通过对缓存访问参数的分析识别出有必要重点关注的数据。除上述实施例外,本领域技术可以根据实际情况自行设置并利用缓存访问参数、设置其他预设条件,本公开不以此为限。

当缓存访问参数不满足预设条件时,可以不做任何处理。

其中,步骤S106还可以包括:

步骤S1064,接收所述待审核数据库发送的数据清除消息,所述数据清除消息包括待清除缓存数据的识别符;

步骤S1065,清除与所述识别符对应的缓存数据。

待审核数据库发送的数据清除消息可以是通过软件自行判断出待清除数据后发送的消息,也可以是人工发送的消息,该消息至少包括待清除缓存数据的识别符。

在接收到该消息后,可以将该识别符对应的数据清除出缓存,从而优化缓存数据结构,提高缓存命中率。

在本公开的一种示例性实施方式中,还包括:根据所述缓存访问参数确定是否在缓存中清除所述目标数据相关的缓存数据。

例如,对于客户管理系统的缓存,当一名客户的一个数据的命中率低于第一阈值时,可以将该客户的ID发送给待审核数据库,从而使待审核数据库判断是否需要将该客户的相关数据都从缓存中清除,以合理利用缓存空间。在接收到待审核数据库的数据清除消息后(数据清除消息包括待清除缓存数据的数据源的标识符),清除与所述数据源对应的缓存数据。

图3是本公开一种示例性实施方式中缓存管理方法的一种流程图。

参考图3,可选的,方法100还可以包括步骤S108,根据数据库的改动实时更新与所述数据库中的改动数据对应的缓存数据。

步骤S108可以包括:

步骤S1081,监听与缓存对应的数据库的变化日志,判断所述数据库中的数据是否有改动。

步骤S1082,如果有改动,根据所述改动确定目标数据以及所述目标数据的更新值。

步骤S1083,根据所述目标数据以及所述更新值更新缓存数据。

有别于现有技术中的被动更改缓存数据,本公开实施例提出了主动监控数据库变化日志,主动更新缓存数据的策略。示例性而言,更新缓存数据的方式可以为根据变化日志中判断出的改动确定目标数据的键名以及最新的键值,从而在缓存中更新该键名对应的键值。通过主动捕捉数据库数据变化、更新缓存数据使之与数据库中对应的数据保持一致,可以在一定程度上提高缓存命中率。

通过主动监控缓存数据对应的数据库的变化,并在数据库发生变化时实时更新缓存数据,保证缓存数据与数据库数据的一致性,也可以在一定程度上提高缓存命中率,从而提高系统运维效率。

上述方法提及的数据、指标均可以页面显示的形式提供给相关技术人员,使相关技术人员可以实时监控各缓存指标,及时优化缓存策略,提高运维效率。

在其他示例性实施例中,上述缓存数据可以根据预设的路由规则存放于多个缓存硬件中,从而解决海量数据的缓存瓶颈问题。

通过上述缓存管理方法,可以在获取各数据缓存访问参数的基础上根据缓存访问参数优化缓存数据管理结构,克服海量数据存储于缓存所产生的影响运维效率的问题。

对应于上述方法实施例,本公开还提供一种缓存管理装置,可以用于执行上述方法实施例。

图3示意性示出本公开示例性实施例中缓存管理方法的再一种流程图。

图4示意性示出本公开一个示例性实施例中一种缓存管理装置的方框图。

参考图4,缓存管理装置400可以包括:

请求拦截模块402,设置为获取针对目标数据的缓存访问请求;

参数获取模块404,设置为根据缓存访问请求以及请求处理结果更新缓存访问参数;

数据调整模块406,设置为根据所述缓存访问参数确定是否在缓存中清除所述目标数据。

可选的,缓存管理装置400还可以包括:

数据更新模块408,设置为根据数据库的改动实时更新与所述数据库中的改动数据对应的缓存数据。

由于装置400的各功能已在其对应的方法实施例中予以详细说明,本公开于此不再赘述。

根据本公开的一个方面,提供一种缓存管理装置,包括:

存储器;以及

耦合到所属存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上述任意一项所述的方法。

该实施例中的装置的处理器执行操作的具体方式已经在有关该缓存管理方法的实施例中执行了详细描述,此处将不做详细阐述说明。

图5是根据一示例性实施例示出的一种装置500的框图。装置500 可以是智能手机、平板电脑等移动终端。

参照图5,装置500可以包括以下一个或多个组件:处理组件502,存储器505,电源组件506以及通信组件516。

处理组件502通常控制装置500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作以及记录操作相关联的操作等。处理组件502 可以包括一个或多个处理器518来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。

存储器505被配置为存储各种类型的数据以支持在装置500的操作。这些数据的示例包括用于在装置500上操作的任何应用程序或方法的指令。存储器505可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储器505中还存储有一个或多个模块,该一个或多个模块被配置成由该一个或多个处理器518执行,以完成上述任一所示方法中的全部或者部分步骤。

电源组件506为装置500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为装置500生成、管理和分配电力相关联的组件。

通信组件516被配置为便于装置500和其他设备之间有线或无线方式的通信。装置500可以接入基于通信标准的无线网络,如WiFi,2G 或3G,或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件516还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,装置500可以被一个或多个应用专用集成电路 (ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

可选的,还提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上述任意一项所述的缓存管理方法。该计算机可读存储介质例如可以为包括指令的临时性和非临时性计算机可读存储介质。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和构思由权利要求指出。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1