CN103544117B - 一种数据读取方法及装置 - Google Patents
一种数据读取方法及装置 Download PDFInfo
- Publication number
- CN103544117B CN103544117B CN201210243782.2A CN201210243782A CN103544117B CN 103544117 B CN103544117 B CN 103544117B CN 201210243782 A CN201210243782 A CN 201210243782A CN 103544117 B CN103544117 B CN 103544117B
- Authority
- CN
- China
- Prior art keywords
- cache
- target data
- backend
- client
- parameter
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供一种数据读取方法及装置,所述方法包括:接收客户端发送的读取请求,所述读取请求包括目标数据的信息;依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数,并将所述存在参数缓存至高速缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,向所述客户端返回所述Backend未保存所述目标数据的结果。本申请公开的方法和装置,可解决现有技术中Backend响应无效请求造成的处理资源浪费以及性能低的技术问题。
Description
技术领域
本申请涉及网络数据处理领域,特别涉及一种数据读取方法及装置。
背景技术
随着计算机技术的飞速发展,Cache-Based应用模式逐渐融入到人们的日常生活中,所谓Cache-Based应用是指由高速缓存Cache和后端数据源Backend组成的应用。其中,Cache设置在客户端,Backend设置在服务器,Cache中缓存有部分Backend中的数据,在客户端用户需要获取数据时,先判断Cache中是否缓存有该数据,如果是,则从Cache中读取该数据;如果否,则继续判断Backend中是否保存有该数据,如果否,则向客户端返回“无数据”;如果是,则从Backend中读取该数据,并缓存到Cache中,以便客户端下次需要访问这个数据时,可以直接从Cache中读取,提高数据读取速度,缩短应用的响应时间。
一般情况下,客户端如果未在Cache中读取到数据,则不论是否能从Backend中读取该数据,都会向Backend发送读取请求,如果Backend中保存有客户端需要的数据,那么读取请求就是有效的,而如果Backend中也没有保存该数据,则认为读取请求是无效的。对于无效请求来说,同样需要Backend查找其保存的数据中是否有客户端需要读取的数据,浪费了Backend的处理资源;另外,相对于Cache来说,Backend对读取请求的响应时间较长,且当读取请求为无效请求时,Backend的处理结果只能向客户端返回“无数据”,Backend对这种无效请求的响应就直接导致了Cache-Based应用的响应时间过长,降低了应用的性能。
发明内容
本申请所要解决的技术问题是提供一种数据读取方法,用以解决现有技术中Backend响应无效请求造成的处理资源浪费以及性能低的技术问题。
本申请还提供了一种数据读取装置,用以保证上述方法在实际中的实现及应用。
为了解决上述问题,本申请公开了一种数据读取方法,包括如下步骤:
接收客户端发送的读取请求,所述读取请求包括目标数据的信息;
依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数,并将所述存在参数缓存至高速缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,向所述客户端返回所述Backend未保存所述目标数据的结果。
优选的,在所述将所述存在参数缓存至Cache之前,所述方法还包括:
设置所述存在参数的有效时长,
所述将所述存在参数缓存至Cache,具体包括:
通过将所述存在参数及其有效时长缓存至Cache。
优选的,所述方法还包括:
超过所述存在参数的有效时长后,根据客户端的请求更新所述目标数据对应的存在参数及有效时长。
优选的,依据所述Backend的数据更新频率设置所述有效时长。
优选的,所述存在参数采用面向对象编程中的对象实现,如果未在Backend中查找到所述目标数据,则将不包含数据的对象缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端从Cache中获取与目标数据的信息相对应的对象;
判断所述对象中是否包含所述目标数据,如果否,则判定所述Cache以及所述Backend中均未保存所述目标数据。
优选的,所述存在参数采用存在标识实现,如果未在Backend中查找到所述目标数据,则将目标数据不存在的标识缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端判断Cache中是否保存所述目标数据,如果否,则判断所述Cache中是否保存有目标数据不存在的标识,如果是,则判定所述Cache以及所述Backend中均未保存所述目标数据。
相应地,本申请还公开了一种数据读取装置,该装置包括:
接收单元,用于接收客户端发送的读取请求,所述读取请求包括目标数据的信息;
生成单元,用于依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数;
发送单元,用于将所述存在参数缓存至高速缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,向所述客户端返回所述Backend未保存所述目标数据的结果。
优选的,在所述将所述存在参数缓存至Cache之前,所述装置还包括:
设置单元,用于设置所述存在参数的有效时长;
所述发送单元,具体用于将所述存在参数及其有效时长缓存至Cache。
优选的,所述装置还包括:
更新单元,用于在超过所述存在参数的有效时长后,根据客户端的请求更新所述目标数据对应的存在参数及有效时长。
优选的,所述设置单元,具体用于依据所述Backend的数据更新频率设置所述有效时长。
优选的,所述生成单元生成的存在参数采用面向对象编程中的对象实现,如果未在Backend中查找到所述目标数据,则所述发送单元将不包含数据的对象缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端从Cache中获取与目标数据的信息相对应的对象;
判断所述对象中是否包含所述目标数据,如果否,则判定所述Cache以及所述Backend中均未保存所述目标数据。
优选的,所述生成单元生成的存在参数采用存在标识实现,如果未在Backend中查找到所述目标数据,则所述发送单元将目标数据不存在的标识缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端判断Cache中是否保存所述目标数据,如果否,则判断所述Cache中是否保存有目标数据不存在的标识,如果是,则判定所述Cache以及所述Backend中均未保存所述目标数据。
与现有技术相比,本申请包括以下优点:当客户端请求从Backend读取目标数据,且Backend经查找判定其并未存储该目标数据时,则生成一个存在参数,并缓存至Cache中,这样,当客户端再次请求读取这一目标数据时,只需要在读取速度较快的Cache中查找即可(Cache就可以向客户端返回“无数据”的处理结果),而不需要再向Backend发送无效请求,这就可节省Backend查找目标数据的资源;同时,避免Backend响应客户端的读取请求,还能大幅降低Cache-Based应用的响应时间,提高应用的性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请数据读取装置实施例1的流程图;
图2为本申请中生成存在参数的实施例1的流程图;
图3为本申请中生成存在参数的实施例2的流程图;
图4为本申请数据读取装置实施例2的流程图;
图5为本申请数据读取装置实施例3的流程图;
图6为本申请数据读取装置实施例1的示意图;
图7为本申请数据读取装置实施例2的示意图;
图8为本申请数据读取装置实施例3的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
接收客户端获取目标数据的读取请求,并在判定Backend中亦未存储该目标数据时,生成存在参数缓存到Cache中,这样在客户端再次有获取该目标数据的需求时,就可以直接从读取速度较快的Cache中获取,即Cache可以通过存在参数向客户端反馈Backend以及Cache中均不存在客户端需要读取的目标数据的处理结果,这就可避免客户端在Cache不存在目标数据的前提下,继续去Backend读取数据导致的Backend处理资源浪费以及Cache-Based应用的性能下降的问题。
参考图1,示出了本申请一种数据读取方法实施例1的流程图,可以包括以下步骤:
步骤101,接收客户端发送的读取请求,所述读取请求包括目标数据的信息。
在客户端需要获取某一目标数据时,可以先访问高速缓存Cache,判断Cache内是否缓存有客户端当前所需获取的目标数据,若在Cache内搜索到该目标数据,则直接从Cache内读取即可;若未在Cache内搜索到该目标数据,客户端则需要去存取速度较慢的后端数据源Backend内读取。当然,从Backend内读取数据的结果也可包括两种情况,一种是Backend内存储有目标数据,这样客户端就可以获取该目标数据,并将目标数据缓存到Cache中,以备客户端再次需要获取该目标数据时使用(因为Cache的存取速度要快于Backend的存取速度,因此将数据缓存在Cache内供客户端读取,就可缩短Cache-Based应用对客户端的响应时间);另一种是Backend内未存储客户端所需的目标数据,此时则会向客户端返回“无数据”的处理结果,在这种情况下客户端向Backend发送的读取请求就是无效请求。
本步骤即是客户端在无法从Cache中搜索到需要的目标数据时,向Backend发送的数据读取请求,请求中包含的目标数据的信息是为了让Backend知晓客户端当前想要访问的是哪个或哪些目标数据。
需要说明的是,高速缓存Cache可为硬件形式的高速缓冲存储器,也可为软件和硬件相结合的缓存方式。
步骤102,依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数,并将所述存在参数缓存至高速缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,向所述客户端返回所述Backend未保存所述目标数据的结果。
若Backend接收到客户端的读取请求,即说明Cache内未存储客户端需要访问的目标数据,如上所述,如果Backend内保存有该目标数据,则会将目标数据反馈给客户端,同时还会通过客户端将目标数据缓存至Cache内;如果Backend内也未保存该目标数据,本申请实施例并不直接向客户端返回“无数据”的处理结果,而是生成一个表示“无数据”结果的存在参数反馈给客户端,同时亦会将生成的存在参数缓存至Cache中。也就是说,对于有效请求来说,Backend会将目标数据反馈给客户端,对于无效请求来说,Backend亦会向客户端反馈一个可视为“数据”的存在参数。这样,当客户端再次需要访问该目标参数时,缓存在Cache内的被视为“数据”的存在参数就会通知客户端,Backend内没有保存其想访问的目标数据,从而避免客户端继续访问Backend导致的Backend处理资源浪费;此外,客户端不再需要等待Backend向其反馈“无数据”的结果,而是通过读取速度很快的Cache进行结果反馈,这就可以大大缩短Cache-Based应用的响应时间,提高应用性能。
本申请实施例中生成存在参数的方式可体现为以下两种方案:
一种方案是,利用面向对象的编程语言(如Java/C++/C#)实现。
所述存在参数采用面向对象编程中的对象实现,如果未在Backend中查找到所述目标数据,则将不包含数据的对象(即空的对象)缓存至所述Cache。
采用这种方案,当客户端再次需要访问目标数据时,Cache就可以直接向客户端返回Backend未保存目标数据的结果,客户端也就不会再继续去Backend中读取这一目标数据,参见图2所示流程图,具体过程可包括:
步骤201,客户端从Cache中获取与目标数据的信息相对应的对象。
步骤202,判断所述对象中是否包含所述目标数据,如果否,则判定所述Cache以及所述Backend中均未保存所述目标数据。
Cache中保存的不是与目标数据的信息相对应的目标数据,就是与目标数据的信息相对应的存在参数,在接收到客户端发送的读取请求后,根据请求中包含的信息即可搜索到目标数据或被视为“数据”的存在参数。如果搜索到目标数据,则说明Cache可以向客户端提供其所需访问的数据;如果搜索到存在参数,则说明不仅Cache内未缓存客户端需要的目标数据,Backend内也未保存该目标数据。具体地,作为以对象方式实现的存在参数来说,搜索到与信息对应的对象之后,即可解析该对象判断其是否为空,如果为空,就可以判定Cache与Backend内均未保存客户端当前要访问的目标数据,直接向客户端返回“无数据”的处理结果。
另外,需要说明的是,Cache除了可以如上所述的缓存与信息相对应的目标数据或存在参数,还可以仅缓存存在参数,即Backend可以将搜索到目标数据作为对象的成员变量添加到对象中,再通过客户端缓存至Cache。也就是说,当Backend中未存储客户端需要访问的目标数据时,对象是空的,不包含数据,但是当Backend中存储有客户端需要访问的目标数据时,就可以将目标数据视为对象的成员变量,这样Cache就可以只缓存存在参数。如果解析存在参数发现其中含有目标数据,就将目标数据反馈给客户端,如果解析存在参数发现为空,则向客户端返回“无数据”。
作为本方案的一种实施例,对象可体现为CacheEntryBag,利用Java语言其具体实现过程可描述如下:
进一步地,利用Java语言实现的本申请的数据读取过程可描述如下:
另一种方案是,利用过程式语言或函数式语言实现,需要说明的是,这种方案需设置两套key/value,一套用于搜索目标数据,一套用于搜索存在参数。
所述存在参数采用存在标识实现,如果未在Backend中查找到所述目标数据,则将目标数据不存在的标识缓存至所述Cache。
采用这种方案,当客户端再次需要访问目标数据时,Cache也可以直接向客户端返回Backend未保存目标数据的结果,防止客户端继续去Backend中读取这一目标数据,参见图3所示流程图,具体过程可包括:
步骤301,客户端判断Cache中是否保存所述目标数据。
步骤302,在判断结果为否时,继续判断所述Cache中是否保存有目标数据不存在的标识,如果是,则判定所述Cache以及所述Backend中均未保存所述目标数据。
本方案设置了两套key/value,因此在Cache响应客户端的读取请求时可体现以下两个判断步骤:一个判断用于确认客户端能否从Cache中获取到目标数据,一个判断用于确认客户端是否需要继续访问Backend。如果第一个判断结果表示Cache可以向客户端提供其所需访问的目标数据,则不再执行第二个判断;如果第一个判断结果表示Cache未缓存该目标数据,则需要执行第二个判断,并在确认Cache中缓存有目标数据不存在的标识时,向客户端返回“无数据”的处理结果;如果经过第二判断确认Cache中未缓存目标数据不存在的标识,则通知客户端可以尝试去Backend中读取目标数据。
参考图4,示出了本申请一种数据读取方法实施例2的流程图,可以包括以下步骤:
步骤401,接收客户端发送的读取请求,所述读取请求包括目标数据的信息。
步骤402,依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数。
步骤403,设置所述存在参数的有效时长。
步骤404,将所述存在参数及其有效时长缓存至高速缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,向所述客户端返回所述Backend未保存所述目标数据的结果。
与方法实施例1相比,本实施例在生成存在参数后,还要为存在参数设置其存在的有效时长,在有效时长规定的范围内,客户端均可通过缓存在Cache中的存在参数判断是否有必要继续访问Backend,而一旦超出有效时长,存在参数即失效被替换出Cache。
这主要是因为,Backend本身具有一定的更新周期,随着Backend的不断更新,可能之前未搜索到的数据已被更新存储到了Backend,如果此时继续通过Cache向客户端反馈“无数据”的处理结果,这显然是不准确的,因此,本实施例通过设置有效时长的方式来控制每个存在参数在Cache中缓存的有效性,一旦超过有效时长,客户端即可直接去Backend中尝试获取目标数据。当然,根据Backend的更新情况,客户端直接访问Backend的结果可能是获取到目标数据也可能是获取到存在参数。
需要说明的是,存在参数的有效时长可以根据实际的业务状况需要设置,也可以根据Backend的更新频率设置,因为出现处理结果不准确的原因是Backend更新了存储的数据,因此,根据Backend的数据更新频率来设置有效时长是最合理的。
参考图5,示出了本申请一种数据读取方法实施例3的流程图,可以包括以下步骤:
步骤501,接收客户端发送的读取请求,所述读取请求包括目标数据的信息。
步骤502,依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数。
步骤503,设置所述存在参数的有效时长。
步骤504,将所述存在参数及其有效时长缓存至高速缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,向所述客户端返回所述Backend未保存所述目标数据的结果。
步骤505,超过所述存在参数的有效时长后,根据客户端的请求更新所述目标数据对应的存在参数及有效时长。
有效时长是用来控制与其对应的存在参数的有效性的,如果超出有效时长,存在参数即会被Cache替换掉,这样,在Cache未缓存目标数据的情况下,就不能直接向客户端返回“无数据”的处理结果,也就是说,客户端仍会去Backend中获取目标数据。如果更新后的Backend中存储了客户端所需访问的数据,则可将更新的数据发送到客户端,并缓存至Cache;如果在更新后的Backend中还是未搜索到客户端要访问的数据,则可根据客户端的请求,重新生成存在参数缓存到Cache中,这样,在客户端再次需要获取这一目标数据时,Cache就可以继续向客户端返回“无数据”的处理结果。
需要说明的是,在重新生成存在参数后,也可为新的存在参数设置一个有效时长,且新设置的有效时长可与之前的有效时长相同,也可根据实际的业务状况调整有效时长与之前的不同。
下面以用户通过客户端进行网上购物的过程为例,对本申请技术方案的使用过程进行简单介绍。
例如,用户欲购买一件上衣,Cache缓存有上衣的图片信息、品牌简介,Backend存储有上衣的图片信息、品牌简介、商品参数(如尺码、颜色)、商品评价。
客户端向Cache或Backend请求获取数据的形式可包括以下几种:
1.如果客户端用户想要获取上衣的图片信息,则客户端通过直接访问Cache的方式,就可以从Cache中获取图片信息反馈给用户查看。
2.如果客户端用户想要获取商品评价数据,则在遍历Cache后发现其中并未缓存该数据,此时客户端就会去Backend中获取,并将获取到的数据缓存到Cache中以备后续再次访问。
3.如果客户端用户想要获取表示裤长信息的商品参数,则经过搜索发现Cache和Backend中均未存储这一数据,此时,Backend就会生成一个针对裤长信息的存在参数,以此通知客户端不存在裤长信息这一数据,同时还要将生成的存在参数缓存到Cache中,这样,当用户再次需要获取裤长信息时,在设置的有效时长范围内Cache就可以直接向客户端返回“无数据”的处理结果。
4.如果客户端用户想要获取表示面料信息的商品参数,同样地,Backend也会生成一个针对面料信息的存在参数缓存至Cache,并在有效时长规定的时间段内通过Cache直接向客户端返回“无数据”的处理结果。如果在后期的维护更新过程中,将面料信息增加进Backend,则在存在参数的有效时长超期后,如果客户端再次发起获取面料信息的请求,Cache就不能再向客户端返回“无数据”,这样,客户端就会继续访问Backend,由Backend将新增的面料信息发送至客户端,并缓存在Cache。
需要说明的是,为了保持Cache与Backend间数据的一致性,尽量提高通过Cache向客户端提供的数据的准确性,Cache会根据数据的替换周期不断进行数据替换,因此,这就可能在某一时刻Cache可以向客户端反馈目标数据,但若出现在Backend的更新过程中,删除了该数据的情况,就可能导致Cache在下一时刻反馈给客户端的是表示“无数据”的存在参数。
参考图6,示出了本申请一种数据读取装置实施例1的示意图,所述装置可包括:
接收单元601,用于接收客户端发送的读取请求,所述读取请求包括目标数据的信息;
生成单元602,用于依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数;
发送单元603,用于将所述存在参数缓存至高速缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,向所述客户端返回所述Backend未保存所述目标数据的结果。
一般情况下,为了提高应用的性能,客户端会先去存取速度快的Cache中获取数据,只有在Cache中不存在客户端欲访问的数据时,才会去存取速度较慢的Backend读取,本申请实施例提供的技术方案就是在客户端去Backend获取数据的过程中。
与现有技术相比,本申请实施例在判定Backend中不存在客户端需要读取的目标数据时,并不仅仅向客户端返回“无数据”的处理结果,最重要的是会通过生成单元生成一个可视为“数据”的存在参数,将存在参数发送至客户端,并缓存在Cache中。这样,既通知了客户端Backend中未存储其需要的目标数据,又可在客户端再次需要访问该目标数据时,由Cache直接根据存在参数向客户端返回“无数据”的处理结果,而无需客户端访问Backend,由Backend执行搜索操作后再通知客户端“无数据”,不但节省了Backend的处理资源,还加快了Cache-Based应用的响应速度,提高了应用的性能。
对于生成单元来说,其可以按照以下两种方式生成存在参数:
一种方案是,所述生成单元生成的存在参数采用面向对象编程中的对象实现,如果未在Backend中查找到所述目标数据,则所述发送单元将不包含数据的对象缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端从Cache中获取与目标数据的信息相对应的对象;
判断所述对象中是否包含所述目标数据,如果否,则判定所述高速缓存以及所述Backend中均未保存所述目标数据。
另一种方案是,所述生成单元生成的存在参数采用存在标识实现,如果未在Backend中查找到所述目标数据,则所述发送单元将目标数据不存在的标识缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端判断Cache中是否保存所述目标数据,如果否,则判断所述Cache中是否保存有目标数据不存在的标识,如果是,则判定所述Cache以及所述Backend中均未保存所述目标数据。
参考图7,示出了本申请一种数据读取装置实施例2的示意图,所述装置可包括:
接收单元701,用于接收客户端发送的读取请求,所述读取请求包括目标数据的信息;
生成单元702,用于依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数;
设置单元703,用于设置所述存在参数的有效时长;
发送单元704,用于将所述存在参数及其有效时长缓存至高速缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,向所述客户端返回所述Backend未保存所述目标数据的结果。
随着Backend的不断更新,之前未存储的数据可能在更新过程中增加进Backend,也可能之前存储的数据在更新过程中被删除,因此Cache中的数据或存在参数并不是一直有效的,为了保证Cache提供给客户端的数据的准确性,可以为每个数据和存在参数设置一个有效时长。在有效时长规定的范围内,客户端可以通过缓存在Cache中的存在参数判断是否有必要继续访问Backend,而一旦超出有效时长,存在参数即失效被替换出Cache,客户端就需要去Backend中获取数据。
需要说明的是,存在参数的有效时长可以根据实际的业务状况需要设置,也可以根据Backend的更新频率设置,因为出现处理结果不准确的原因是Backend更新了存储的数据,因此,根据Backend的数据更新频率来设置有效时长是最合理的。
参考图8,示出了本申请一种数据读取装置实施例3的示意图,所述装置可包括:
接收单元801,用于接收客户端发送的读取请求,所述读取请求包括目标数据的信息;
生成单元802,用于依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数;
设置单元803,用于设置所述存在参数的有效时长;
发送单元804,用于将所述存在参数及其有效时长缓存至高速缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,向所述客户端返回所述Backend未保存所述目标数据的结果;
更新单元805,用于在超过所述存在参数的有效时长后,根据客户端的请求更新所述目标数据对应的存在参数及有效时长。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种信息推送方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据读取方法,其特征在于,所述方法包括:
接收客户端发送的读取请求,所述读取请求包括目标数据的信息;
依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数,向所述客户端反馈所述存在参数,并将所述存在参数缓存至缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,通过所述存在参数向所述客户端返回所述Backend未保存所述目标数据的结果;
其中,所述与所述目标数据的信息相对应的存在参数,用于表示所述Backend内无所述目标数据的结果;
其中,在所述将所述存在参数缓存至Cache之前,所述方法还包括:
设置所述存在参数的有效时长,
所述将所述存在参数缓存至Cache,具体包括:
将所述存在参数及其有效时长缓存至Cache。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
超过所述存在参数的有效时长后,根据客户端的请求更新所述目标数据对应的存在参数及有效时长。
3.根据权利要求1所述的方法,其特征在于,依据所述Backend的数据更新频率设置所述有效时长。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述存在参数采用面向对象编程中的对象实现,如果未在Backend中查找到所述目标数据,则将不包含数据的对象缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端从Cache中获取与目标数据的信息相对应的对象;
判断所述对象中是否包含所述目标数据,如果否,则判定所述Cache以及所述Backend中均未保存所述目标数据。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述存在参数采用存在标识实现,如果未在Backend中查找到所述目标数据,则将目标数据不存在的标识缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端判断Cache中是否保存所述目标数据,如果否,则判断所述Cache中是否保存有目标数据不存在的标识,如果是,则判定所述Cache以及所述Backend中均未保存所述目标数据。
6.一种数据读取装置,其特征在于,所述装置包括:
接收单元,用于接收客户端发送的读取请求,所述读取请求包括目标数据的信息;
生成单元,用于依据所述目标数据的信息从后端数据源Backend中查找目标数据,如果未查找到,则生成与所述目标数据的信息相对应的存在参数;其中,所述与所述目标数据的信息相对应的存在参数,用于表示所述Backend内无所述目标数据的结果;
发送单元,用于向所述客户端反馈所述存在参数,将所述存在参数缓存至缓存Cache,以使所述Cache在所述客户端再次读取所述目标数据时,通过所述存在参数向所述客户端返回所述Backend未保存所述目标数据的结果;
其中,在所述将所述存在参数缓存至Cache之前,所述装置还包括:
设置单元,用于设置所述存在参数的有效时长;
所述发送单元,具体用于将所述存在参数及其有效时长缓存至Cache。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
更新单元,用于在超过所述存在参数的有效时长后,根据客户端的请求更新所述目标数据对应的存在参数及有效时长。
8.根据权利要求6所述的装置,其特征在于,所述设置单元,具体用于依据所述Backend的数据更新频率设置所述有效时长。
9.根据权利要求6-8任一项所述的装置,其特征在于,所述生成单元生成的存在参数采用面向对象编程中的对象实现,如果未在Backend中查找到所述目标数据,则所述发送单元将不包含数据的对象缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端从Cache中获取与目标数据的信息相对应的对象;
判断所述对象中是否包含所述目标数据,如果否,则判定所述Cache以及所述Backend中均未保存所述目标数据。
10.根据权利要求6-8任一项所述的装置,其特征在于,所述生成单元生成的存在参数采用存在标识实现,如果未在Backend中查找到所述目标数据,则所述发送单元将目标数据不存在的标识缓存至所述Cache;
所述Cache向所述客户端返回所述Backend未保存所述目标数据的结果,具体包括:
客户端判断Cache中是否保存所述目标数据,如果否,则判断所述Cache中是否保存有目标数据不存在的标识,如果是,则判定所述Cache以及所述Backend中均未保存所述目标数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210243782.2A CN103544117B (zh) | 2012-07-13 | 2012-07-13 | 一种数据读取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210243782.2A CN103544117B (zh) | 2012-07-13 | 2012-07-13 | 一种数据读取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103544117A CN103544117A (zh) | 2014-01-29 |
CN103544117B true CN103544117B (zh) | 2017-03-01 |
Family
ID=49967589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210243782.2A Active CN103544117B (zh) | 2012-07-13 | 2012-07-13 | 一种数据读取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544117B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156180A (zh) * | 2015-04-20 | 2016-11-23 | 苏宁云商集团股份有限公司 | 异步计算和预处理数据的方法及系统 |
CN105630889B (zh) * | 2015-12-18 | 2019-12-10 | 北京奇虎科技有限公司 | 通用缓存的方法及装置 |
CN106911589B (zh) | 2015-12-22 | 2020-04-24 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和设备 |
CN105631042B (zh) * | 2016-01-26 | 2019-02-22 | 北京京东尚科信息技术有限公司 | 一种数据验重的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887398A (zh) * | 2010-06-25 | 2010-11-17 | 浪潮(北京)电子信息产业有限公司 | 一种动态提高服务器输入输出吞吐量的方法和系统 |
CN102253810A (zh) * | 2010-05-17 | 2011-11-23 | 腾讯科技(深圳)有限公司 | 数据读取方法、装置和系统 |
CN103136278A (zh) * | 2011-12-05 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 一种读取数据的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100498740C (zh) * | 2007-09-11 | 2009-06-10 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、系统及数据缓存装置 |
-
2012
- 2012-07-13 CN CN201210243782.2A patent/CN103544117B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253810A (zh) * | 2010-05-17 | 2011-11-23 | 腾讯科技(深圳)有限公司 | 数据读取方法、装置和系统 |
CN101887398A (zh) * | 2010-06-25 | 2010-11-17 | 浪潮(北京)电子信息产业有限公司 | 一种动态提高服务器输入输出吞吐量的方法和系统 |
CN103136278A (zh) * | 2011-12-05 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 一种读取数据的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103544117A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3880581B2 (ja) | キャッシュのロックを使用するストリーミング・データ | |
JP4579501B2 (ja) | アプリケーションサーバおよびアプリケーションプログラム | |
US6925485B1 (en) | Proxy cache preloader | |
US20100180208A1 (en) | Server side data cache system | |
US20090307329A1 (en) | Adaptive file placement in a distributed file system | |
CN103544117B (zh) | 一种数据读取方法及装置 | |
JP2005018787A (ja) | キャッシュエントリを無効化するために使用できるデータベーステーブル変更情報の登録および取り出し | |
JP2009529183A (ja) | 応答出力キャッシュに対するマルチキャッシュ協調 | |
US8352684B2 (en) | Optimal cache replacement scheme using a training operation | |
US8140767B2 (en) | Cache management through delayed writeback | |
CN107016027A (zh) | 实现业务信息快速搜索的方法和装置 | |
CN105550338A (zh) | 一种基于HTML5应用缓存的移动Web缓存优化方法 | |
US6711662B2 (en) | Multiprocessor cache coherence management | |
CN106462635A (zh) | 智能网页内容拦截 | |
JP5395967B1 (ja) | データ処理システム、情報端末、データ処理方法およびデータ処理プログラム | |
US20230121843A1 (en) | Managing data stored in a cache using a reinforcement learning agent | |
US20060064636A1 (en) | Method and system for caching and adapting dynamic display pages for small display devices | |
CN104978283B (zh) | 一种内存访问控制方法,及装置 | |
CN107480072A (zh) | 基于关联模式的透明计算服务端缓存优化方法及系统 | |
CN109656939B (zh) | 一种缓存更新方法、装置、设备和存储介质 | |
US6996683B2 (en) | Cache coherency in a multi-processor system | |
US9021205B2 (en) | Page replacement in cache memory | |
CN109005465A (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
Zhijun et al. | Towards efficient data access in mobile cloud computing using pre-fetching and caching | |
Feng et al. | Markov tree prediction on web cache prefetching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |