CN109800243A - 一种缓存穿透的方法及终端 - Google Patents
一种缓存穿透的方法及终端 Download PDFInfo
- Publication number
- CN109800243A CN109800243A CN201910019252.1A CN201910019252A CN109800243A CN 109800243 A CN109800243 A CN 109800243A CN 201910019252 A CN201910019252 A CN 201910019252A CN 109800243 A CN109800243 A CN 109800243A
- Authority
- CN
- China
- Prior art keywords
- buffer service
- cache server
- data
- mark
- caching
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种缓存穿透的方法及终端,在根据数据请求进行数据获取时,先判断缓存服务是否可用,若否,则直接访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用,即如果发现缓存服务不可用,在从数据库获取对应的数据后,不会再将获取的数据加载到缓存服务,从而可以合理调用缓存服务,避免在缓存服务不可用时的无意义操作,提高资源利用率和效率,提高用户体验感。
Description
技术领域
本发明涉及缓存穿透技术领域,尤其是涉及一种缓存穿透的方法及终端。
背景技术
缓存技术是用来提升程序运行性能的常见手段,许多网站都是通过缓存技术来提升自身的性能,在一般系统中通常使用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执行所述计算机程序时实现实施例一中的各个步骤。
综上所述,本发明提供的一种缓存穿透的方法及终端,通过对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识,在根据数据请求进行数据获取时,先根据所述缓存服务是否可用的标识判断缓存服务是否可用,若否,则访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用,即如果发现缓存服务不可用,在从数据库获取对应的数据后,不会再将获取的数据加载到缓存服务;通过独立的异步线程定时查询缓存服务器来实现动态监测,若连续查询缓存服务器失败的次数达到预设次数,则将所述缓存服务的标识设置为不可用,可用提高动态监测缓存服务状态的准确性,能够合理调用缓存服务,减少业务时间,及时缓存穿透至数据库进行访问,避免在缓存服务不可用时的无意义操作,提高资源利用率和效率,提高用户体验感。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种缓存穿透的方法,其特征在于,包括步骤:
S1、接收数据请求,判断缓存服务是否可用,若否,则执行S2;
S2、访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用。
2.根据权利要求1所述的一种缓存穿透的方法,其特征在于,所述步骤S1中还包括:
对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识;
所述判断缓存服务是否可用包括:
根据所述缓存服务是否可用的标识判断缓存服务是否可用。
3.根据权利要求2所述的一种缓存穿透的方法,其特征在于,所述对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识包括:
定时查询缓存服务器,判断访问所述缓存服务器是否成功,若是,则将预设的失败次数设置为0,并将所述缓存服务的标识设置为可用;
若否,则将所述预设的失败次数加1,并判断连续查询缓存服务器失败的次数是否达到预设次数,若是,则将所述缓存服务的标识设置为不可用。
4.根据权利要求3所述的一种缓存穿透的方法,其特征在于,所述定时查询缓存服务器,判断访问所述缓存服务器是否成功具体为:
定时访问所述缓存服务器上预设字段的数据,判断所述缓存服务器是否能正常返回所述预设字段的数据,若是,则访问所述缓存服务器成功;若否,则访问所述缓存服务器失败。
5.根据权利要求2至4中任一项所述的一种缓存穿透的方法,其特征在于,通过独立的异步线程对缓存服务器进行动态监测,并根据监测结果设置缓存服务是否可用的标识。
6.一种缓存穿透的终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
S1、接收数据请求,判断缓存服务是否可用,若否,则执行S2;
S2、访问数据库获取与所述数据请求对应的数据,并屏蔽对所述缓存服务的使用。
7.根据权利要求6所述的一种缓存穿透的终端,其特征在于,所述步骤S1中还包括:
对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识;
所述判断缓存服务是否可用包括:
根据所述缓存服务是否可用的标识判断缓存服务是否可用。
8.根据权利要求7所述的一种缓存穿透的终端,其特征在于,所述对缓存服务器进行动态监测,根据监测结果设置缓存服务是否可用的标识包括:
定时查询缓存服务器,判断访问所述缓存服务器是否成功,若是,则将预设的失败次数设置为0,并将所述缓存服务的标识设置为可用;
若否,则将所述预设的失败次数加1,并判断连续查询缓存服务器失败的次数是否达到预设次数,若是,则将所述缓存服务的标识设置为不可用。
9.根据权利要求8所述的一种缓存穿透的终端,其特征在于,所述定时查询缓存服务器,判断访问所述缓存服务器是否成功具体为:
定时访问所述缓存服务器上预设字段的数据,判断所述缓存服务器是否能正常返回所述预设字段的数据,若是,则访问所述缓存服务器成功;若否,则访问所述缓存服务器失败。
10.根据权利要求7至9中任一项所述的一种缓存穿透的终端,其特征在于,通过独立的异步线程对缓存服务器进行动态监测,并根据监测结果设置缓存服务是否可用的标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910019252.1A CN109800243A (zh) | 2019-01-09 | 2019-01-09 | 一种缓存穿透的方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910019252.1A CN109800243A (zh) | 2019-01-09 | 2019-01-09 | 一种缓存穿透的方法及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109800243A true CN109800243A (zh) | 2019-05-24 |
Family
ID=66558631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910019252.1A Pending CN109800243A (zh) | 2019-01-09 | 2019-01-09 | 一种缓存穿透的方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800243A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792436B1 (en) * | 2000-02-11 | 2004-09-14 | Persistence Software, Inc. | Method for synchronizing multiple software caches in a memory |
CN106815287A (zh) * | 2016-12-06 | 2017-06-09 | 中国银联股份有限公司 | 一种缓存管理方法及装置 |
CN107844434A (zh) * | 2011-02-28 | 2018-03-27 | 甲骨文国际公司 | 通用高速缓存管理系统 |
-
2019
- 2019-01-09 CN CN201910019252.1A patent/CN109800243A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792436B1 (en) * | 2000-02-11 | 2004-09-14 | Persistence Software, Inc. | Method for synchronizing multiple software caches in a memory |
CN107844434A (zh) * | 2011-02-28 | 2018-03-27 | 甲骨文国际公司 | 通用高速缓存管理系统 |
CN106815287A (zh) * | 2016-12-06 | 2017-06-09 | 中国银联股份有限公司 | 一种缓存管理方法及装置 |
Non-Patent Citations (1)
Title |
---|
小程故事多: "关于缓存和数据库强一致的可行方案", 《简书HTTPS://WWW.JIANSHU.COM/P/D8568E5F3F1C》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3008592B1 (en) | Pre-fetching content for service-connected applications | |
EP2691907B1 (en) | Methods and apparatus for blocking usage tracking | |
US8347269B2 (en) | Method, system and computer program for debugging software applications in a web environment | |
US7761559B2 (en) | System and method of remotely managing and loading artifacts | |
US20020112048A1 (en) | System and method for providing behavioral information of a user accessing on-line resources | |
CN106503134A (zh) | 浏览器跳转至应用程序的数据同步方法及装置 | |
US20150371047A1 (en) | Determining coverage of dynamic security scans using runtime and static code analyses | |
CN102855318A (zh) | 网页预加载方法与系统 | |
US20110219454A1 (en) | Methods of identifying activex control distribution site, detecting security vulnerability in activex control and immunizing the same | |
CN101364988A (zh) | 一种确定网页安全性的方法和装置 | |
WO2014015753A1 (en) | Method and apparatus for intercepting or cleaning-up plugins | |
CN109558320A (zh) | 系统测试方法、装置、系统、设备及计算机可读存储介质 | |
CN106911735B (zh) | 数据获取方法及装置 | |
CN111813646A (zh) | docker容器环境下注入应用探针的方法和装置 | |
CN113360377A (zh) | 一种测试方法和装置 | |
CN113448985A (zh) | 一种api接口生成方法、调用方法、装置及电子设备 | |
CN111935107B (zh) | 身份认证的方法及装置、系统、电子设备、存储介质 | |
CN112667660B (zh) | 一种基于复杂事件识别的企业内部信息系统数据泄露识别方法 | |
US20150205675A1 (en) | Method and System for Improving Reliability of a Background Page | |
CN110838929A (zh) | 系统错误排查方法和系统错误排查装置 | |
CN107766068A (zh) | 应用系统补丁安装方法、装置、计算机设备和存储介质 | |
CN106911733B (zh) | 云代理的网址访问方法及装置 | |
CN108200191B (zh) | 利用微扰法的客户端动态url相关脚本字符串检测系统 | |
CN105282150B (zh) | 一种面向Web系统的登录助手系统 | |
CN109800243A (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 |