通用缓存的方法及装置的制造方法

文档序号:9865613阅读:363来源:国知局
通用缓存的方法及装置的制造方法
【技术领域】
[0001]本发明涉及互联网技术领域,尤其涉及一种通用缓存的方法及装置。
【背景技术】
[0002]在网络应用中,为了提高数据的读取速度,削减系统的压力,通常需要使用缓存cache技术,即使用缓存来直接为客户端服务。
[0003]具体的,在进行业务缓存时,首先会从cache中获取目标数据,若可以获取到目标数据,则直接返回目标数据,若不能从cache获取到目标数据,则需要先从数据库中获取目标数据,然后将其添加到缓存中,再返回目标数据,以使得下一次可以直接从缓存中获取该目标数据。
[0004]然而,对于不同的业务,具体缓存的行为也是不同的,有的需要从Postgre数据库中获取数据进行缓存、有的需要从Redis数据库中获取数据进行缓存,从不同的数据库中获取数据时,使用的函数、使用的语言以及设置的参数等都是各不相同的。因此针对不同的缓存行为,必须编写不同的缓存代码。缓存代码中包括:从cache中获取数据、从数据库中获取数据、添加缓存、返回数据整个过程。但是实际上对于不同的缓存行为除了从数据库中获取数据的步骤不同之外,其它的三个步骤都是一致的,但是在设计不同的缓存代码时需要将整个过程完整编写,这样使代码编写更加繁琐。

【发明内容】

[0005]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的通用缓存的方法及装置。
[0006]为解决上述技术问题,一方面,本发明提供了一种通用缓存的方法,包括:
[0007]在内存中查找客户端请求的目标数据;
[0008]若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
[0009]将所述目标数据进行缓存;并且,
[0010]将所述目标数据返回给所述客户端。
[0011]另一方面,本发明提供了一种通用缓存的装置,包括:
[0012]查找单元,用于在内存中查找客户端请求的目标数据;
[0013]调用单元,用于若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
[0014]缓存单元,用于将所述目标数据进行缓存;
[0015]返回单元,用于将所述目标数据返回给所述客户端。
[0016]借由上述技术方案,本发明提供的通用缓存的方法及装置,能够通过首先在内存中查找客户端请求的目标数据,若在内存中不能查找到该目标数据,则调用钩子Hook函数获取该目标数据,然后将获取到的目标数据进行缓存,并将该目标数据返回给客户端。其中钩子函数用于调用外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据。与现有技术相比,本发明能够通过钩子函数从数据库中获取目标数据,相当于将从数据库中获取目标数据的过程的代码单独进行编写,不同的数据库对应不同的获取代码,而将在内存中查找目标数据、对目标数据进行缓存、以及将目标数据返回给客户端这三个过程进行统一,编写成一个通用的代码,这样既解决了对于不同的数据库编写不同的缓存代码时出现的代码重复率高、代码编写繁琐的问题,又满足了对于不同的数据库获取目标数据的行为不同的需求。因此,简化了缓存代码的编写过程。
[0017]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0018]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0019]图1示出了本发明实施例提供的一种通用缓存的方法流程图;
[0020]图2示出了本发明实施例提供的另一种通用缓存的方法流程图;
[0021]图3示出了本发明实施例提供的一种通用缓存的装置的组成框图;
[0022]图4示出了本发明实施例提供的另一种通用缓存的装置的组成框图。
【具体实施方式】
[0023]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0024]为解决现有缓存代码编写繁琐的问题,本发明实施例提供了一种通用缓存的方法,如图1所示,该方法包括:
[0025]101、在内存中查找客户端请求的目标数据。
[0026]在互联网应用中,为了提高数据的读取速度,减轻系统的压力,通常会使用缓存技术。尤其是大容量数据读取时,使用缓存技术可以减少客户端与服务器端的数据交互,将数据存放到内存中,使客户端可以直接从内存中读取,而不用重复地从数据库中获取,减小了系统的压力,同时也提高了系统的效率。本实施例就是使用缓存技术,因此,当接收到客户端发送的请求时,首先会从内存中查找客户端请求的目标数据。
[0027]102、若未查找到目标数据,则调用钩子Hook函数获取目标数据。
[0028]若在内存中没有查找到目标数据,则需要从数据库中去获取目标数据。本实施例是通过钩子函数来获取目标数据的。钩子函数本质是一段用以处理系统消息的程序,通用系统调用并将其挂入系统中执行,它是可以根据设置插入到正常程序运行中的正常程序外层的函数,通常需要设置调用钩子函数的条件,在该条件下钩子函数才会被调用。
[0029]本实施例中,调用钩子函数的条件是未在内存中查找到目标数据。具体的钩子函数用于钩取外层的目标函数,实现目标函数挂入系统并执行的效果。需要说明的是,目标函数有多个,不同的目标函数用于从不同的数据库中获取目标数据。
[0030]103、将目标数据进行缓存。
[0031 ]将通过钩子函数获取到的目标数据进行缓存,缓存是指将该目标数据缓存到内存中,以使客户端下一次请求该目标数据时,直接从内存中获取,而不需要重复从数据库中获取。
[0032]104、将目标数据返回给客户端。
[0033]将获取到的目标数据返回给客户端。
[0034]进一步的,步骤103和步骤104的执行顺序可以调整,可以先将目标数据进行缓存,然后再将其返回给客户端;也可以先将目标数据库返回给客户端,然后再将其进行缓存。
[0035]进一步的,在步骤101之后,若在内存中能够查找到客户端请求的目标数据,则直接将该目标数据返回给客户端。
[0036]本实施例提供的通用缓存的方法,能够通过首先在内存中查找客户端请求的目标数据,若在内存中不能查找到该目标数据,则调用钩子Hook函数获取该目标数据,然后将获取到的目标数据进行缓存,并将该目标数据返回给客户端。其中钩子函数用于调用外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据。与现有技术相比,本实施例能够通过钩子函数从数据库中获取目标数据,相当于将从数据库中获取目标数据的过程的代码单独进行编写,不同的数据库对应不同的获取代码,而将在内存中查找目标数据、对目标数据进行缓存、以及将目标数据返回给客户端这三个过程进行统一,编写成一个通用的代码,这样既解决了对于不同的数据库编写不同的缓存代码时出现的代码重复率高、代码编写繁琐的问题,又满足了对于不同的数据库获取目标数据的行为不同的需求。因此,简化了缓存代码的编写过程。
[0037]进一步的,作为对图1所示方法的细化及扩展,本发明另一实施例还给出了一种通用缓存的方法。如图2所示,该方法包括:
[0038]201、在内存中查找客户端请求的目标数据。
[0039]本步骤的实现方式与图1步骤101的实现方式相同,此处不再赘述。
[0040]202、若未查找到目标数据,则调用钩子函数钩取对应目标数据库的目标函数。
[0041]若在内存中没有查找到客户端请求的目标数据,则调用钩子函数钩取外层的目标函数,目标函数与目标数据库是对应的关系。具体钩取的实现过程为:根据钩子函数外层的调用指示,钩取对应的目标函数,其中调用指示中包含目标函数的名称、调用的地址、调用的方法等参数。
[0042]需要说明的是,不同的目标函数用于从不同的目标数据库中获取目标数据。不同的目标数据库是与不同的业务相匹配的,不同的业务通常涉及到的目标数据库包括Postgre数据库、结构化查询语言(Structured Query Language,简称SQL)数据库、Redis数据库等。由于目标数据库的不同,因此获取目标数据
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1