CN105630889A - 通用缓存的方法及装置 - Google Patents

通用缓存的方法及装置 Download PDF

Info

Publication number
CN105630889A
CN105630889A CN201510959059.8A CN201510959059A CN105630889A CN 105630889 A CN105630889 A CN 105630889A CN 201510959059 A CN201510959059 A CN 201510959059A CN 105630889 A CN105630889 A CN 105630889A
Authority
CN
China
Prior art keywords
target data
buffer memory
hook
function
hook function
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.)
Granted
Application number
CN201510959059.8A
Other languages
English (en)
Other versions
CN105630889B (zh
Inventor
王院生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Beijing Qianxin Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Beijing Qianxin Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Beijing Qianxin Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510959059.8A priority Critical patent/CN105630889B/zh
Publication of CN105630889A publication Critical patent/CN105630889A/zh
Application granted granted Critical
Publication of CN105630889B publication Critical patent/CN105630889B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种通用缓存的方法及装置,涉及互联网技术领域,为解决现有缓存代码编写繁琐的问题而发明。本发明的方法包括:在内存中查找客户端请求的目标数据;若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;将所述目标数据进行缓存;并且,将所述目标数据返回给所述客户端。本发明应用于互联网应用中使用缓存技术的过程中。

Description

通用缓存的方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种通用缓存的方法及装置。
背景技术
在网络应用中,为了提高数据的读取速度,削减***的压力,通常需要使用缓存cache技术,即使用缓存来直接为客户端服务。
具体的,在进行业务缓存时,首先会从cache中获取目标数据,若可以获取到目标数据,则直接返回目标数据,若不能从cache获取到目标数据,则需要先从数据库中获取目标数据,然后将其添加到缓存中,再返回目标数据,以使得下一次可以直接从缓存中获取该目标数据。
然而,对于不同的业务,具体缓存的行为也是不同的,有的需要从Postgre数据库中获取数据进行缓存、有的需要从Redis数据库中获取数据进行缓存,从不同的数据库中获取数据时,使用的函数、使用的语言以及设置的参数等都是各不相同的。因此针对不同的缓存行为,必须编写不同的缓存代码。缓存代码中包括:从cache中获取数据、从数据库中获取数据、添加缓存、返回数据整个过程。但是实际上对于不同的缓存行为除了从数据库中获取数据的步骤不同之外,其它的三个步骤都是一致的,但是在设计不同的缓存代码时需要将整个过程完整编写,这样使代码编写更加繁琐。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的通用缓存的方法及装置。
为解决上述技术问题,一方面,本发明提供了一种通用缓存的方法,包括:
在内存中查找客户端请求的目标数据;
若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
将所述目标数据进行缓存;并且,
将所述目标数据返回给所述客户端。
另一方面,本发明提供了一种通用缓存的装置,包括:
查找单元,用于在内存中查找客户端请求的目标数据;
调用单元,用于若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
缓存单元,用于将所述目标数据进行缓存;
返回单元,用于将所述目标数据返回给所述客户端。
借由上述技术方案,本发明提供的通用缓存的方法及装置,能够通过首先在内存中查找客户端请求的目标数据,若在内存中不能查找到该目标数据,则调用钩子Hook函数获取该目标数据,然后将获取到的目标数据进行缓存,并将该目标数据返回给客户端。其中钩子函数用于调用外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据。与现有技术相比,本发明能够通过钩子函数从数据库中获取目标数据,相当于将从数据库中获取目标数据的过程的代码单独进行编写,不同的数据库对应不同的获取代码,而将在内存中查找目标数据、对目标数据进行缓存、以及将目标数据返回给客户端这三个过程进行统一,编写成一个通用的代码,这样既解决了对于不同的数据库编写不同的缓存代码时出现的代码重复率高、代码编写繁琐的问题,又满足了对于不同的数据库获取目标数据的行为不同的需求。因此,简化了缓存代码的编写过程。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种通用缓存的方法流程图;
图2示出了本发明实施例提供的另一种通用缓存的方法流程图;
图3示出了本发明实施例提供的一种通用缓存的装置的组成框图;
图4示出了本发明实施例提供的另一种通用缓存的装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决现有缓存代码编写繁琐的问题,本发明实施例提供了一种通用缓存的方法,如图1所示,该方法包括:
101、在内存中查找客户端请求的目标数据。
在互联网应用中,为了提高数据的读取速度,减轻***的压力,通常会使用缓存技术。尤其是大容量数据读取时,使用缓存技术可以减少客户端与服务器端的数据交互,将数据存放到内存中,使客户端可以直接从内存中读取,而不用重复地从数据库中获取,减小了***的压力,同时也提高了***的效率。本实施例就是使用缓存技术,因此,当接收到客户端发送的请求时,首先会从内存中查找客户端请求的目标数据。
102、若未查找到目标数据,则调用钩子Hook函数获取目标数据。
若在内存中没有查找到目标数据,则需要从数据库中去获取目标数据。本实施例是通过钩子函数来获取目标数据的。钩子函数本质是一段用以处理***消息的程序,通用***调用并将其挂入***中执行,它是可以根据设置***到正常程序运行中的正常程序外层的函数,通常需要设置调用钩子函数的条件,在该条件下钩子函数才会被调用。
本实施例中,调用钩子函数的条件是未在内存中查找到目标数据。具体的钩子函数用于钩取外层的目标函数,实现目标函数挂入***并执行的效果。需要说明的是,目标函数有多个,不同的目标函数用于从不同的数据库中获取目标数据。
103、将目标数据进行缓存。
将通过钩子函数获取到的目标数据进行缓存,缓存是指将该目标数据缓存到内存中,以使客户端下一次请求该目标数据时,直接从内存中获取,而不需要重复从数据库中获取。
104、将目标数据返回给客户端。
将获取到的目标数据返回给客户端。
进一步的,步骤103和步骤104的执行顺序可以调整,可以先将目标数据进行缓存,然后再将其返回给客户端;也可以先将目标数据库返回给客户端,然后再将其进行缓存。
进一步的,在步骤101之后,若在内存中能够查找到客户端请求的目标数据,则直接将该目标数据返回给客户端。
本实施例提供的通用缓存的方法,能够通过首先在内存中查找客户端请求的目标数据,若在内存中不能查找到该目标数据,则调用钩子Hook函数获取该目标数据,然后将获取到的目标数据进行缓存,并将该目标数据返回给客户端。其中钩子函数用于调用外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据。与现有技术相比,本实施例能够通过钩子函数从数据库中获取目标数据,相当于将从数据库中获取目标数据的过程的代码单独进行编写,不同的数据库对应不同的获取代码,而将在内存中查找目标数据、对目标数据进行缓存、以及将目标数据返回给客户端这三个过程进行统一,编写成一个通用的代码,这样既解决了对于不同的数据库编写不同的缓存代码时出现的代码重复率高、代码编写繁琐的问题,又满足了对于不同的数据库获取目标数据的行为不同的需求。因此,简化了缓存代码的编写过程。
进一步的,作为对图1所示方法的细化及扩展,本发明另一实施例还给出了一种通用缓存的方法。如图2所示,该方法包括:
201、在内存中查找客户端请求的目标数据。
本步骤的实现方式与图1步骤101的实现方式相同,此处不再赘述。
202、若未查找到目标数据,则调用钩子函数钩取对应目标数据库的目标函数。
若在内存中没有查找到客户端请求的目标数据,则调用钩子函数钩取外层的目标函数,目标函数与目标数据库是对应的关系。具体钩取的实现过程为:根据钩子函数外层的调用指示,钩取对应的目标函数,其中调用指示中包含目标函数的名称、调用的地址、调用的方法等参数。
需要说明的是,不同的目标函数用于从不同的目标数据库中获取目标数据。不同的目标数据库是与不同的业务相匹配的,不同的业务通常涉及到的目标数据库包括Postgre数据库、结构化查询语言(StructuredQueryLanguage,简称SQL)数据库、Redis数据库等。由于目标数据库的不同,因此获取目标数据时,使用的函数名称、函数编写使用的语言以及相关参数的格式和个数等都是各不相同的,因此需要获取不同的目标函数。
203、执行目标函数,从目标数据库中获取目标数据。
钩取到目标函数之后,需要执行目标函数,然后从目标函数对应的目标数据库中获取目标数据。
204、将目标数据作为钩子函数的返回参数返回。
将由步骤203中获取的目标数据作为钩子函数的返回参数返回。其中,本实施例规定钩子函数的返回参数中只包含两个参数,分别为:执行状态和执行结果,而目标数据是作为返回参数中的执行结果返回的。另外执行状态表示钩子函数的执行状态,包括执行中和执行完成两种状态。返回执行状态为了给出一个指示信息,以使后续步骤继续等待或者开始执行。
205、为目标数据设置缓存的唯一标识。
在内存中通常会存储不同的目标数据,根据内存空间的大小所存储的目标数据的个数也是不同的。为了区分内存中的不同的目标数据,需要为每个目标数据设置一个唯一的标识,以使从内存中可以根据唯一标识获取对应的目标数据。其中唯一标识是由客户端定义和设置的。
206、设置目标数据的缓存有效时长。
由于内存空间的限制,对于大量的需要缓存的数据不可能同时都缓存到内存中,因此需要对目标数据设置缓存有效时长,以便于在超过缓存有效时长之后其他的目标数据可以进入内存进行缓存,从而提高内存的利用率。
本实施例中,缓存有效时长包括缓存成功时对应的第一缓存有效时长和缓存失败时对应的第二缓存有效时长。由于在对目标数据进行缓存时,可能会因为一些代码错误等其他的原因出现缓存不成功的情况,因此将目标数据进行缓存通常分为两种结果,分别为:缓存成功和缓存失败。对应两种不同的缓存结果,分别设置两种不同的缓存有效时长,即第一缓存有效时长和第二缓存有效时长。第一缓存有效时长表示目标数据缓存成功后,其在内存中可以存储的时长,超过该时长后该目标数据就会失效,并自动被删除;第二缓存有效时长表示目标数据缓存失败后,清除目标数据所用的时间,该时间为一个极小值,相当于缓存失败后立即将目标数据清除。
207、将目标数据进行缓存。
将获取到的目标数据根据设置的唯一标识进行缓存,并根据缓存结果规定其缓存有效时长。缓存的目的是使客户端下一次请求该目标数据时,直接从内存中获取,而不需要重复从数据库中获取。
208、将目标数据返回给客户端。
本步骤的实现方式与图1步骤104的实现方式相同,此处不再赘述。
进一步的,步骤207与步骤208的执行顺序可以调整,可以先将目标数据进行缓存,然后再将其返回给客户端;也可以先将目标数据库返回给客户端,然后再将其进行缓存。
进一步的,在第一缓存有效时长内,可能会出现目标数据数据库中更新目标数据的情况。因此为了保证内存中与目标数据库中的目标数据的一致性,往往需要从内存中删除该目标数据,以使客户端获取该目标数据时,不能在内存中查找到,从而使客户端从目标数据库中获取,这样就可以确保客户端获取到更新后的目标数据。具体在删除内存中的目标数据时,需要通过其对应的唯一标识将其从内存中查找到并删除。
进一步的,在步骤201之后,若在内存中能够查找到客户端请求的目标数据,则直接将该目标数据返回给客户端。
进一步的,作为对上述各实施例的实现,本发明实施例的另一实施例还提供了一种通用缓存的装置,用于实现上述图1和图2所述的方法。如图3所示,该装置包括:查找单元31、调用单元32、缓存单元33以及返回单元34。
查找单元31,用于在内存中查找客户端请求的目标数据;
调用单元32,用于若未查找到目标数据,则调用钩子Hook函数获取目标数据,钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
缓存单元33,用于将目标数据进行缓存;
返回单元34,用于将目标数据返回给客户端。
进一步的,调用单元32调用的钩子函数的返回参数中包含执行状态和执行结果。
进一步的,如图4所示,调用单元32,包括:
钩取模块321,用于根据钩子函数外层的调用指示,钩取对应目标数据库的目标函数;
执行模块322,用于执行目标函数,从目标数据库中获取目标数据;
返回模块323,用于将目标数据作为钩子函数的返回参数返回。
进一步的,如图4所示,装置进一步包括:
第一设置单元35,用于在调用钩子函数获取目标数据之后,为目标数据设置缓存的唯一标识,以使从内存中根据唯一标识获取对应的目标数据。
进一步的,如图4所示,装置进一步包括:
第二设置单元36,用于在调用钩子函数获取目标数据之后,设置目标数据的缓存有效时长,缓存有效时长包括缓存成功时对应的第一缓存有效时长和缓存失败时对应的第二缓存有效时长。
进一步的,如图4所示,装置进一步包括:
删除单元37,用于当在第一缓存有效时长内,需要从内存中删除目标数据时,通过唯一标识查找并删除目标数据。
本实施例提供的通用缓存的装置,能够通过首先在内存中查找客户端请求的目标数据,若在内存中不能查找到该目标数据,则调用钩子Hook函数获取该目标数据,然后将获取到的目标数据进行缓存,并将该目标数据返回给客户端。其中钩子函数用于调用外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据。与现有技术相比,本实施例能够通过钩子函数从数据库中获取目标数据,相当于将从数据库中获取目标数据的过程的代码单独进行编写,不同的数据库对应不同的获取代码,而将在内存中查找目标数据、对目标数据进行缓存、以及将目标数据返回给客户端这三个过程进行统一,编写成一个通用的代码,这样既解决了对于不同的数据库编写不同的缓存代码时出现的代码重复率高、代码编写繁琐的问题,又满足了对于不同的数据库获取目标数据的行为不同的需求。因此,简化了缓存代码的编写过程。
本发明的实施例公开了:
A1、一种通用缓存的方法,其特征在于,所述方法包括:
在内存中查找客户端请求的目标数据;
若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
将所述目标数据进行缓存;并且,
将所述目标数据返回给所述客户端。
A2、根据A1所述的方法,其特征在于,所述钩子函数的返回参数中包含执行状态和执行结果。
A3、根据A1所述的方法,其特征在于,所述调用钩子函数获取所述目标数据,包括:
根据所述钩子函数外层的调用指示,钩取对应目标数据库的目标函数;
执行所述目标函数,从所述目标数据库中获取所述目标数据;
将所述目标数据作为所述钩子函数的返回参数返回。
A4、根据A1所述的方法,其特征在于,在所述调用钩子函数获取所述目标数据之后,所述方法进一步包括:
为所述目标数据设置缓存的唯一标识,以使从所述内存中根据所述唯一标识获取对应的目标数据。
A5、根据A4所述的方法,其特征在于,在所述调用钩子函数获取所述目标数据之后,所述方法进一步包括:
设置所述目标数据的缓存有效时长,所述缓存有效时长包括缓存成功时对应的第一缓存有效时长和缓存失败时对应的第二缓存有效时长。
A6、根据A5所述的方法,其特征在于,所述方法进一步包括:
当在所述第一缓存有效时长内,需要从所述内存中删除所述目标数据时,通过所述唯一标识查找并删除所述目标数据。
B7、一种通用缓存的装置,其特征在于,所述装置包括:
查找单元,用于在内存中查找客户端请求的目标数据;
调用单元,用于若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
缓存单元,用于将所述目标数据进行缓存;
返回单元,用于将所述目标数据返回给所述客户端。
B8、根据B7所述的装置,其特征在于,所述调用单元调用的所述钩子函数的返回参数中包含执行状态和执行结果。
B9、根据B7所述的装置,其特征在于,所述调用单元,包括:
钩取模块,用于根据所述钩子函数外层的调用指示,钩取对应目标数据库的目标函数;
执行模块,用于执行所述目标函数,从所述目标数据库中获取所述目标数据;
返回模块,用于将所述目标数据作为所述钩子函数的返回参数返回。
B10、根据B7所述的装置,其特征在于,所述装置进一步包括:
第一设置单元,用于在所述调用钩子函数获取所述目标数据之后,为所述目标数据设置缓存的唯一标识,以使从所述内存中根据所述唯一标识获取对应的目标数据。
B11、根据B10所述的装置,其特征在于,所述装置进一步包括:
第二设置单元,用于在所述调用钩子函数获取所述目标数据之后,设置所述目标数据的缓存有效时长,所述缓存有效时长包括缓存成功时对应的第一缓存有效时长和缓存失败时对应的第二缓存有效时长。
B12、根据B11所述的装置,其特征在于,所述装置进一步包括:
删除单元,用于当在所述第一缓存有效时长内,需要从所述内存中删除所述目标数据时,通过所述唯一标识查找并删除所述目标数据。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (10)

1.一种通用缓存的方法,其特征在于,所述方法包括:
在内存中查找客户端请求的目标数据;
若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
将所述目标数据进行缓存;并且,
将所述目标数据返回给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述钩子函数的返回参数中包含执行状态和执行结果。
3.根据权利要求1所述的方法,其特征在于,所述调用钩子函数获取所述目标数据,包括:
根据所述钩子函数外层的调用指示,钩取对应目标数据库的目标函数;
执行所述目标函数,从所述目标数据库中获取所述目标数据;
将所述目标数据作为所述钩子函数的返回参数返回。
4.根据权利要求1所述的方法,其特征在于,在所述调用钩子函数获取所述目标数据之后,所述方法进一步包括:
为所述目标数据设置缓存的唯一标识,以使从所述内存中根据所述唯一标识获取对应的目标数据。
5.根据权利要求4所述的方法,其特征在于,在所述调用钩子函数获取所述目标数据之后,所述方法进一步包括:
设置所述目标数据的缓存有效时长,所述缓存有效时长包括缓存成功时对应的第一缓存有效时长和缓存失败时对应的第二缓存有效时长。
6.根据权利要求5所述的方法,其特征在于,所述方法进一步包括:
当在所述第一缓存有效时长内,需要从所述内存中删除所述目标数据时,通过所述唯一标识查找并删除所述目标数据。
7.一种通用缓存的装置,其特征在于,所述装置包括:
查找单元,用于在内存中查找客户端请求的目标数据;
调用单元,用于若未查找到所述目标数据,则调用钩子Hook函数获取所述目标数据,所述钩子函数用于钩取外层的目标函数,不同的目标函数用于从不同的数据库中获取目标数据;
缓存单元,用于将所述目标数据进行缓存;
返回单元,用于将所述目标数据返回给所述客户端。
8.根据权利要求7所述的装置,其特征在于,所述调用单元调用的所述钩子函数的返回参数中包含执行状态和执行结果。
9.根据权利要求7所述的装置,其特征在于,所述调用单元,包括:
钩取模块,用于根据所述钩子函数外层的调用指示,钩取对应目标数据库的目标函数;
执行模块,用于执行所述目标函数,从所述目标数据库中获取所述目标数据;
返回模块,用于将所述目标数据作为所述钩子函数的返回参数返回。
10.根据权利要求7所述的装置,其特征在于,所述装置进一步包括:
第一设置单元,用于在所述调用钩子函数获取所述目标数据之后,为所述目标数据设置缓存的唯一标识,以使从所述内存中根据所述唯一标识获取对应的目标数据。
CN201510959059.8A 2015-12-18 2015-12-18 通用缓存的方法及装置 Active CN105630889B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510959059.8A CN105630889B (zh) 2015-12-18 2015-12-18 通用缓存的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510959059.8A CN105630889B (zh) 2015-12-18 2015-12-18 通用缓存的方法及装置

Publications (2)

Publication Number Publication Date
CN105630889A true CN105630889A (zh) 2016-06-01
CN105630889B CN105630889B (zh) 2019-12-10

Family

ID=56045822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510959059.8A Active CN105630889B (zh) 2015-12-18 2015-12-18 通用缓存的方法及装置

Country Status (1)

Country Link
CN (1) CN105630889B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436769A (zh) * 2017-08-07 2017-12-05 安徽优易思信息技术有限责任公司 一种缓存配置的修改方法及装置
CN109614347A (zh) * 2018-10-22 2019-04-12 中国平安人寿保险股份有限公司 多级缓存数据的处理方法、装置、存储介质及服务器

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010037333A1 (en) * 2000-04-17 2001-11-01 Toyota Jidosha Kabushiki Kaisha Asset information management method, asset information management system, asset information identifier database, and data structure of asset information management identifier
CN101236564A (zh) * 2008-03-03 2008-08-06 浪潮通信信息***有限公司 一种海量数据高性能读取显示方法
CN101707684A (zh) * 2009-10-14 2010-05-12 北京东方广视科技股份有限公司 一种Cache调度的方法、设备及***
CN102012931A (zh) * 2010-12-01 2011-04-13 北京瑞信在线***技术有限公司 过滤式缓存方法及其装置、缓存***
CN102682037A (zh) * 2011-03-18 2012-09-19 阿里巴巴集团控股有限公司 一种数据获取方法、***及装置
CN103544117A (zh) * 2012-07-13 2014-01-29 阿里巴巴集团控股有限公司 一种数据读取方法及装置
CN104601675A (zh) * 2014-12-29 2015-05-06 小米科技有限责任公司 一种服务器负载均衡的方法及装置
CN104811394A (zh) * 2015-04-21 2015-07-29 深圳市出众网络有限公司 一种节省访问服务器流量的方法和***
CN105095398A (zh) * 2015-07-03 2015-11-25 北京奇虎科技有限公司 一种信息提供方法和装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010037333A1 (en) * 2000-04-17 2001-11-01 Toyota Jidosha Kabushiki Kaisha Asset information management method, asset information management system, asset information identifier database, and data structure of asset information management identifier
CN101236564A (zh) * 2008-03-03 2008-08-06 浪潮通信信息***有限公司 一种海量数据高性能读取显示方法
CN101707684A (zh) * 2009-10-14 2010-05-12 北京东方广视科技股份有限公司 一种Cache调度的方法、设备及***
CN102012931A (zh) * 2010-12-01 2011-04-13 北京瑞信在线***技术有限公司 过滤式缓存方法及其装置、缓存***
CN102682037A (zh) * 2011-03-18 2012-09-19 阿里巴巴集团控股有限公司 一种数据获取方法、***及装置
CN103544117A (zh) * 2012-07-13 2014-01-29 阿里巴巴集团控股有限公司 一种数据读取方法及装置
CN104601675A (zh) * 2014-12-29 2015-05-06 小米科技有限责任公司 一种服务器负载均衡的方法及装置
CN104811394A (zh) * 2015-04-21 2015-07-29 深圳市出众网络有限公司 一种节省访问服务器流量的方法和***
CN105095398A (zh) * 2015-07-03 2015-11-25 北京奇虎科技有限公司 一种信息提供方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107436769A (zh) * 2017-08-07 2017-12-05 安徽优易思信息技术有限责任公司 一种缓存配置的修改方法及装置
CN109614347A (zh) * 2018-10-22 2019-04-12 中国平安人寿保险股份有限公司 多级缓存数据的处理方法、装置、存储介质及服务器
CN109614347B (zh) * 2018-10-22 2023-07-21 中国平安人寿保险股份有限公司 多级缓存数据的处理方法、装置、存储介质及服务器

Also Published As

Publication number Publication date
CN105630889B (zh) 2019-12-10

Similar Documents

Publication Publication Date Title
CN109840429B (zh) 智能合约部署、调用方法和装置
CN109558320B (zh) ***测试方法、装置、***、设备及计算机可读存储介质
CN103164455B (zh) 数据库的优化方法及装置
CN105095367A (zh) 一种客户端数据的采集方法和装置
CN106844676A (zh) 数据存储方法及装置
CN106227769B (zh) 数据存储方法及装置
CN105100250A (zh) 分发消息的方法、消息分发服务器及分发消息的***
CN104346206A (zh) 一种已卸载软件恢复安装的方法和***
CN107330119A (zh) 缓存数据处理方法、电子设备、计算机存储介质
CN104598652B (zh) 一种数据库查询方法及装置
CN108694049B (zh) 一种更新软件的方法和设备
CN106339415A (zh) 数据的查询方法、装置及***
CN103020196B (zh) 处理数据库操作请求的***
CN113254470B (zh) 一种数据更改方法、装置、计算机设备及存储介质
CN105630889A (zh) 通用缓存的方法及装置
US8131884B1 (en) Reusing system configuration information and metadata for related operations
CN105389394A (zh) 基于多个数据库集群的数据请求处理方法及装置
CN105468776A (zh) 操作数据库的方法、装置及***
CN105630672A (zh) 应用的自动监控方法及装置
CN116341007A (zh) 一种数据查询方法、***、设备及存储介质
CN112579591A (zh) 数据校验方法、装置、电子设备及计算机可读存储介质
CN104504330A (zh) 虚拟化安全检测方法与***
CN105302604A (zh) 应用程序的版本更新方法及装置
CN116302206B (zh) 一种基于MQ的presto数据源热加载方法
CN111858609A (zh) 区块链模糊查询方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100088 Beijing city Xicheng District xinjiekouwai Street 28, block D room 112 (Desheng Park)

Applicant after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Applicant after: QAX Technology Group Inc.

Address before: 100088 Beijing city Xicheng District xinjiekouwai Street 28, block D room 112 (Desheng Park)

Applicant before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Applicant before: BEIJING QIANXIN TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant