一种缓存穿透的方法及终端与流程

文档序号:17762722发布日期:2019-05-24 21:50阅读:146来源:国知局
一种缓存穿透的方法及终端与流程

本发明涉及缓存穿透技术领域,尤其是涉及一种缓存穿透的方法及终端。



背景技术:

缓存技术是用来提升程序运行性能的常见手段,许多网站都是通过缓存技术来提升自身的性能,在一般系统中通常使用redis或者memcache等缓存服务器作为缓存层,以集群或者单节点的方式来提供缓存服务,在业务系统中也需要添加相应的代码来支持缓存服务。一般接口服务预先查询某缓存,如果该缓存不存在,则查询数据库,加载该数据至缓存中,这时,不论使用的缓存软件是单点还是集群方式,都存在宕机、断电、网络差或缓存僵死等各种情况导致缓存不可用,虽然连接缓存均有超时时间等的设置,但这样就存在每次缓存层出现问题后的调用缓存服务都要在等待超时之后才上报缓存异常。

遇到缓存异常时,一般系统为了解决该问题将直接捕获该异常,由程序直接穿透缓存访问数据库,从数据库获取到相应的数据后,会加载获取的数据至缓存中。但是,由于缓存异常,此时加载至缓存中也是失败的,这时就出现了每次缓存异常后仍会正常去访问缓存服务并加载数据至缓存服务的问题,浪费资源,用户体验差。



技术实现要素:

本发明所要解决的技术问题是:提供一种缓存穿透的方法及终端,可以合理调用缓存服务,提高资源利用率。

为了解决上述技术问题,本发明采用的一种技术方案为:

一种缓存穿透的方法,包括步骤:

s1、接收数据请求,判断缓存服务是否可用,若否,则执行s2;

s2、访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种缓存穿透的终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

s1、接收数据请求,判断缓存服务是否可用,若否,则执行s2;

s2、访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用。

本发明的有益效果在于:在根据数据请求进行数据获取时,先判断缓存服务是否可用,若否,则直接访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用,即如果发现缓存服务不可用,在从数据库获取对应的数据后,不会再将获取的数据加载到缓存服务,从而可以合理调用缓存服务,避免在缓存服务不可用时的无意义操作,提高资源利用率和效率,提高用户体验感。

附图说明

图1为本发明实施例的一种缓存穿透的方法的步骤流程图;

图2为本发明实施例的一种缓存穿透的终端的结构示意图;

标号说明:

1、一种缓存穿透的终端;2、存储器;3、处理器。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:在缓存服务不可用时直接访问数据库获取与数据请求对应的数据,并屏蔽对所述缓存服务的使用。

请参照图1,一种缓存穿透的方法,包括步骤:

s1、接收数据请求,判断缓存服务是否可用,若否,则执行s2;

s2、访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用。

从上述描述可知,本发明的有益效果在于:在根据数据请求进行数据获取时,先判断缓存服务是否可用,若否,则直接访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用,即如果发现缓存服务不可用,在从数据库获取对应的数据后,不会再将获取的数据加载到缓存服务,从而可以合理调用缓存服务,避免在缓存服务不可用时的无意义操作,提高资源利用率和效率,提高用户体验感。

进一步的,所述步骤s1中还包括:

对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识;

所述判断缓存服务是否可用包括:

根据所述缓存服务是否可用的标识判断缓存服务是否可用。

由上述描述可知,通过动态监测所述缓存服务器并设置所述标识,可以减少业务时间,及时缓存穿透至数据库进行访问,提高效率,提高用户体验感。

进一步的,所述对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识包括:

定时查询缓存服务器,判断访问所述缓存服务器是否成功,若是,则将预设的失败次数设置为0,并将所述缓存服务的标识设置为可用;

若否,则将所述预设的失败次数加1,并判断连续查询缓存服务器失败的次数是否达到预设次数,若是,则将所述缓存服务的标识设置为不可用。

由上述描述可知,在连续查询缓存服务器失败的次数达到预设次数时才将所述标识设置为不可用,提高了动态监测的准确性。

进一步的,所述定时查询缓存服务器,判断访问所述缓存服务器是否成功具体为:

定时访问所述缓存服务器上预设字段的数据,判断所述缓存服务器是否能正常返回所述预设字段的数据,若是,则访问所述缓存服务器成功;若否,则访问所述缓存服务器失败。

由上述描述可知,通过访问所述缓存服务器上预设字段的数据来判断访问所述缓存服务器是否成功,可以简便快捷地进行判断,便于实现,提高了便利性。

进一步的,通过独立的异步线程对缓存服务器进行动态监测,并根据监测结果设置缓存服务是否可用的标识。

由上述描述可知,通过独立的异步线程对缓存服务器进行动态监测和设置所述标识,可以在不占用资源的情况下,提高获取与所述数据请求对应数据的速度,提高用户体验感。

请参照图2,一种缓存穿透的终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

s1、接收数据请求,判断缓存服务是否可用,若否,则执行s2;

s2、访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用。

从上述描述可知,本发明的有益效果在于:在根据数据请求进行数据获取时,先判断缓存服务是否可用,若否,则直接访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用,即如果发现缓存服务不可用,在从数据库获取对应的数据后,不会再将获取的数据加载到缓存服务,从而可以合理调用缓存服务,避免在缓存服务不可用时的无意义操作,提高资源利用率和效率,提高用户体验感。

进一步的,所述步骤s1中还包括:

对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识;

所述判断缓存服务是否可用包括:

根据所述缓存服务是否可用的标识判断缓存服务是否可用。

由上述描述可知,通过动态监测所述缓存服务器并设置所述标识,可以减少业务时间,及时缓存穿透至数据库进行访问,提高效率,提高用户体验感。

进一步的,所述对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识包括:

定时查询缓存服务器,判断访问所述缓存服务器是否成功,若是,则将预设的失败次数设置为0,并将所述缓存服务的标识设置为可用;

若否,则将所述预设的失败次数加1,并判断连续查询缓存服务器失败的次数是否达到预设次数,若是,则将所述缓存服务的标识设置为不可用。

由上述描述可知,在连续查询缓存服务器失败的次数达到预设次数时才将所述标识设置为不可用,提高了动态监测的准确性。

进一步的,所述定时查询缓存服务器,判断访问所述缓存服务器是否成功具体为:

定时访问所述缓存服务器上预设字段的数据,判断所述缓存服务器是否能正常返回所述预设字段的数据,若是,则访问所述缓存服务器成功;若否,则访问所述缓存服务器失败。

由上述描述可知,通过访问所述缓存服务器上预设字段的数据来判断访问所述缓存服务器是否成功,可以简便快捷地进行判断,便于实现,提高了便利性。

进一步的,通过独立的异步线程对缓存服务器进行动态监测,并根据监测结果设置缓存服务是否可用的标识。

由上述描述可知,通过独立的异步线程对缓存服务器进行动态监测和设置所述标识,可以在不占用资源的情况下,提高获取与所述数据请求对应数据的速度,提高用户体验感。

实施例一

一种缓存穿透的方法,包括步骤:

s1、接收数据请求,判断缓存服务是否可用,若否,则执行s2;

其中,通过独立的异步线程对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识;

具体地,定时查询缓存服务器,访问所述缓存服务器上预设字段的数据,判断所述缓存服务器是否能正常返回所述预设字段的数据,若是,则访问所述缓存服务器成功,将预设的失败次数设置为0,并将所述缓存服务的标识设置为可用;

若否,即出现等待超时或所述缓存服务器异常等不能正常返回所述预设字段数据的时候,则访问所述缓存服务器失败,将所述预设的失败次数加1,并判断连续查询缓存服务器失败的次数是否达到预设次数,若是,则将所述缓存服务的标识设置为不可用;

其中,优选地,每隔10秒钟查询一次缓存服务器,访问所述缓存服务器上预设字段的数据;

优选地,所述预设字段为key;

优选地,所述预设次数为3次,当连续查询缓存服务器失败的次数达到3次时,将所述缓存服务的标识设置为不可用;

具体地,判断所述失败次数是否达到3次,若是,则判断前2次访问所述缓存服务器是否失败,若是,则将所述缓存服务的标识设置为不可用;

所述标识可以是整型变量或布尔型变量;

当所述标识为整型变量时,用0表示所述缓存服务不可用,用1表示所述缓存服务可用;当所述标识为布尔型变量,用false表示所述缓存服务不可用,用true表示所述缓存服务可用;

所有需要使用所述缓存服务的功能模块均需要根据所述缓存服务是否可用的标识来进行操作;

s2、访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用。

具体地,在屏蔽对所述缓存服务的使用后,不再将从数据库获取到的数据加载到所述缓存服务中,也不再访问所述缓存服务进行数据的获取,只有在所述异步线程动态监测到所述缓存服务可用并修改标识后,才能正常访问所述缓存服务。

实施例二

将实施例一所述的方法应用于用户登录的场景:

服务端在缓存服务和数据库中保存有用户登录所需的token;

s1、接收token请求,判断缓存服务是否可用,若否,则执行s2;

在校验token时,先查询所述缓存服务中是否存在对应的token,若否,才访问数据库;

其中,通过独立的异步线程对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识;

具体地,定时查询缓存服务器,访问所述缓存服务器上预设字段key的数据,判断所述缓存服务器是否能正常返回所述预设字段key的数据,若是,则访问所述缓存服务器成功,将预设的失败次数设置为0,并将所述缓存服务的标识设置为可用;

若否,即出现等待超时或所述缓存服务器异常等不能正常返回所述预设字段key的数据的时候,则访问所述缓存服务器失败,将所述预设的失败次数加1,并判断连续查询缓存服务器失败的次数是否达到3次,若是,则将所述缓存服务的标识设置为不可用;

其中,所述标识可以是整型int变量或布尔型boolean变量;

当所述标识为整型int变量时,用0表示所述缓存服务不可用,用1表示所述缓存服务可用;当所述标识为布尔型boolean变量,用false表示所述缓存服务不可用,用true表示所述缓存服务可用;

根据所述缓存服务是否可用的标识判断缓存服务是否可用;

s2、访问数据库获取与所述token请求对应的token,并屏蔽对所述缓存服务的使用。

具体地,根据所述标识确定当前所述缓存服务不可用时,将直接访问数据库获取对应token;

在屏蔽对所述缓存服务的使用后,不再将从数据库获取到的token加载到所述缓存服务中,也不再访问所述缓存服务进行token的获取,只有在所述异步线程动态监测到所述缓存服务可用并修改标识后,才能正常访问所述缓存服务。

实施例三

请参照图2,一种缓存穿透的终端1,包括存储器2、处理器3及存储在存储器2上并可在所述处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例一中的各个步骤。

综上所述,本发明提供的一种缓存穿透的方法及终端,通过对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识,在根据数据请求进行数据获取时,先根据所述缓存服务是否可用的标识判断缓存服务是否可用,若否,则访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用,即如果发现缓存服务不可用,在从数据库获取对应的数据后,不会再将获取的数据加载到缓存服务;通过独立的异步线程定时查询缓存服务器来实现动态监测,若连续查询缓存服务器失败的次数达到预设次数,则将所述缓存服务的标识设置为不可用,可用提高动态监测缓存服务状态的准确性,能够合理调用缓存服务,减少业务时间,及时缓存穿透至数据库进行访问,避免在缓存服务不可用时的无意义操作,提高资源利用率和效率,提高用户体验感。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

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