[发明专利]通用缓存的方法及装置有效
申请号: | 201510959059.8 | 申请日: | 2015-12-18 |
公开(公告)号: | CN105630889B | 公开(公告)日: | 2019-12-10 |
发明(设计)人: | 王院生 | 申请(专利权)人: | 北京奇虎科技有限公司;奇安信科技集团股份有限公司 |
主分类号: | G06F16/957 | 分类号: | G06F16/957 |
代理公司: | 11348 北京鼎佳达知识产权代理事务所(普通合伙) | 代理人: | 王伟锋;刘铁生 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 通用 缓存 方法 装置 | ||
本发明公开了一种通用缓存的方法及装置,涉及互联网技术领域,为解决现有缓存代码编写繁琐的问题而发明。本发明的方法包括:在内存中查找客户端请求的目标数据;若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;将所述目标数据进行缓存;并且,将所述目标数据返回给所述客户端。本发明应用于互联网应用中使用缓存技术的过程中。
技术领域
本发明涉及互联网技术领域,尤其涉及一种通用缓存的方法及装置。
背景技术
在网络应用中,为了提高数据的读取速度,削减系统的压力,通常需要使用缓存cache技术,即使用缓存来直接为客户端服务。
具体的,在进行业务缓存时,首先会从cache中获取目标数据,若可以获取到目标数据,则直接返回目标数据,若不能从cache获取到目标数据,则需要先从数据库中获取目标数据,然后将其添加到缓存中,再返回目标数据,以使得下一次可以直接从缓存中获取该目标数据。
然而,对于不同的业务,具体缓存的行为也是不同的,有的需要从Postgre数据库中获取数据进行缓存、有的需要从Redis数据库中获取数据进行缓存,从不同的数据库中获取数据时,使用的函数、使用的语言以及设置的参数等都是各不相同的。因此针对不同的缓存行为,必须编写不同的缓存代码。缓存代码中包括:从cache中获取数据、从数据库中获取数据、添加缓存、返回数据整个过程。但是实际上对于不同的缓存行为除了从数据库中获取数据的步骤不同之外,其它的三个步骤都是一致的,但是在设计不同的缓存代码时需要将整个过程完整编写,这样使代码编写更加繁琐。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的通用缓存的方法及装置。
为解决上述技术问题,一方面,本发明提供了一种通用缓存的方法,包括:
在内存中查找客户端请求的目标数据;
若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
将所述目标数据进行缓存;并且,
将所述目标数据返回给所述客户端。
另一方面,本发明提供了一种通用缓存的装置,包括:
查找单元,用于在内存中查找客户端请求的目标数据;
调用单元,用于若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
缓存单元,用于将所述目标数据进行缓存;
返回单元,用于将所述目标数据返回给所述客户端。
借由上述技术方案,本发明提供的通用缓存的方法及装置,能够通过首先在内存中查找客户端请求的目标数据,若在内存中不能查找到该目标数据,则调用钩子Hook函数获取该目标数据,然后将获取到的目标数据进行缓存,并将该目标数据返回给客户端。其中钩子函数用于调用外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据。与现有技术相比,本发明能够通过钩子函数从数据库中获取目标数据,相当于将从数据库中获取目标数据的过程的代码单独进行编写,不同的数据库对应不同的获取代码,而将在内存中查找目标数据、对目标数据进行缓存、以及将目标数据返回给客户端这三个过程进行统一,编写成一个通用的代码,这样既解决了对于不同的数据库编写不同的缓存代码时出现的代码重复率高、代码编写繁琐的问题,又满足了对于不同的数据库获取目标数据的行为不同的需求。因此,简化了缓存代码的编写过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇安信科技集团股份有限公司,未经北京奇虎科技有限公司;奇安信科技集团股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510959059.8/2.html,转载请声明来源钻瓜专利网。