一种获取数据的方法及装置与流程

文档序号:11829505阅读:212来源:国知局
一种获取数据的方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种获取数据的方法及装置。



背景技术:

存储服务器包括多个硬盘,用于在硬盘上以数据库的方式存储数据,应用服务器用于向用户使用的客户端提供应用服务。例如,当应用服务器接收到某一客户端发送的、用于获取数据的获取请求时,应用服务器通过与存储服务器之间的网络连接发送获取请求给存储服务器,该获取请求携带待获取数据的数据标识;存储服务器接收该获取请求,在本地的数据库中获取该数据标识对应的数据,然后将获取的数据返回给应用服务器;应用服务器接收存储服务器发送的数据,并将其返回给客户端。

当应用服务器同时接收到多个获取请求且每个获取请求携带的数据标识都相同时,对于每一获取请求,应用服务器均需要通过上述流程获取每一获取请求中的数据标识对应的数据。然而,对于存储服务器而言,当同时接收到应用服务器发送的多个获取请求时,无法同时根据每个获取请求中的数据标识获取对应的数据,只能先从一个获取请求中提取出数据标识,然后从本地获取该数据标识对应的数据;之后再从另一个获取请求中提取出数据标识,以及从本地获取另一个获取请求中的数据标识对应的数据,直至从最后一个获取请求中提取出数据标识,以及在从本地获取最后一个获取请求中的数据标识对应的数据为止;最后再将获取的所有数据发送给应用服务器。

但是,本领域技术人员知道,当应用服务器需要从存储服务器获取数据时,由于从存储服务器硬盘上读取数据的速度较慢,且每次只能根据一个获取请求中的数据标识在本地获取对应的数据;即,当获取完一个获取请求中的数据标识获取对应的数据之后,才能根据下一个获取请求中的数据标识在本地获取对应的数据;如此,当同时接收到应用服务器发送的多个获取请求时,需要耗费大量时间才能获取完每个获取请求中的数据标识对应的数据,导致获取数据的效率较低。



技术实现要素:

为克服相关技术中存在的问题,本发明提供一种获取数据的方法及装置。

根据本发明实施例的第一方面,提供一种获取数据的方法,所述方法包括:

接收多个数据获取请求;所述多个数据获取请求中的每个数据获取请求均至少携带数据标识;

从每个数据获取请求中分别提取出数据标识;

判断所述多个数据获取请求中是否存在至少两个携带的数据标识相同的数据获取请求;

当存在至少两个携带的数据标识相同的数据获取请求时,判断本地缓存中是否存在所述至少两个数据获取请求中的第一数据获取请求携带的数据标识对应的可用数据,所述第一数据获取请求为所述至少两个数据获取请求中的一个获取请求;

当本地缓存中不存在所述至少两个数据获取请求中的第一数据获取请求携带的数据标识对应的可用数据时,根据所述第一数据获取请求携带的数据标识从存储服务器中获取对应的数据;并将获取的数据存储在本地缓存中;

根据所述至少两个数据获取请求中第二数据获取请求携带的数据标识分别从本地缓存中获取对应的可用数据;第二数据获取请求为所述至少两个数据获取请求中除所述第一数据获取请求以外的其他每个数据获取请求。

其中,所述判断本地缓存中是否存在所述至少两个数据获取请求中的第一数据获取请求携带的数据标识对应的可用数据,包括:

判断本地缓存中是否存在所述第一数据获取请求携带的数据标识对应的数据;

当本地缓存中存在所述第一数据获取请求携带的数据标识对应的数据时,判断所述第一数据获取请求携带的数据标识对应的数据是否是过期数据;

当所述第一数据获取请求携带的数据标识对应的数据不是过期数据时,将所述第一数据获取请求携带的数据标识对应的数据作为可用数据。

其中,所述判断本地缓存中是否存在所述第一数据获取请求携带的数据标识对应的数据,包括:

获取本地存储的数据标识列表,所述数据标识列表用于存储本地缓存中存储的所有数据的数据标识;

根据所述第一数据获取请求携带的数据标识查找所述数据标识列表;

当在所述数据标识列表中查找到所述第一数据获取请求携带的数据标识时,确定本地缓存中存在所述第一数据获取请求携带的数据标识对应的数据;

当在所述数据标识列表中未查找到所述第一数据获取请求携带的数据标识时,确定本地缓存中不存在所述第一数据获取请求携带的数据标识对应的数据。

其中,所述判断所述第一数据获取请求携带的数据标识对应的数据是否是过期数 据,包括:

获取本地存储的数据标识与存储时间之间的对应关系;

获取本地的当前时间;

在所述对应关系中获取所述第一数据获取请求携带的数据标识对应的存储时间,所述存储时间为在所述当前时间之前、最近一次在本地缓存中存储所述第一数据获取请求携带的数据标识对应的数据的存储时间;

计算所述当前时间与所述存储时间之间的时间差值;

判断所述时间差值是否大于预设时间差阈值;

当所述时间差值大于所述预设时间差阈值时,确定所述第一数据获取请求携带的数据标识对应的数据是过期数据;

当所述时间差值小于或等于所述预设时间差阈值时,确定所述第一数据获取请求携带的数据标识对应的数据不是过期数据。

进一步地,所述方法还包括:

判断是否接收到第三数据获取请求,所述第三数据获取请求至少携带数据标识;

当接收到所述第三数据获取请求时,从所述第三数据获取请求中提取出数据标识;

判断所述第三数据获取请求携带的数据标识是否与所述第一数据获取请求携带的数据标识相同;

当所述第三数据获取请求携带的数据标识与所述第一数据获取请求携带的数据标识相同时,判断此时是否正在从存储服务器中获取所述第一数据获取请求携带的数据标识对应的可用数据,以及判断此时是否正在在本地缓存中存储所述第一数据获取请求携带的数据标识对应的可用数据;

如果此时正在从存储服务器中获取所述第一数据获取请求携带的数据标识对应的可用数据,或者,正在在本地缓存中存储所述第一数据获取请求携带的数据标识对应的可用数据,则当在本地缓存中完成存储所述可用数据时,根据所述第三数据获取请求携带的数据标识在本地缓存中获取对应的可用数据。

根据本发明实施例的第二方面,提供一种获取数据的装置,其特征在于,所述装置包括:

接收模块,用于接收多个数据获取请求;所述多个数据获取请求中的每个数据获取请求均至少携带数据标识;

第一提取模块,用于从每个数据获取请求中分别提取出数据标识;

第一判断模块,用于判断所述多个数据获取请求中是否存在至少两个携带的数据标 识相同的数据获取请求;

第二判断模块,用于当存在至少两个携带的数据标识相同的数据获取请求时,判断本地缓存中是否存在所述至少两个数据获取请求中的第一数据获取请求携带的数据标识对应的可用数据,所述第一数据获取请求为所述至少两个数据获取请求中的一个获取请求;

第一获取模块,用于当本地缓存中不存在所述至少两个数据获取请求中的第一数据获取请求携带的数据标识对应的可用数据时,根据所述第一数据获取请求携带的数据标识从存储服务器中获取对应的数据;并将获取的数据存储在本地缓存中;

第二获取模块,用于根据所述至少两个数据获取请求中第二数据获取请求携带的数据标识分别从本地缓存中获取对应的可用数据;第二数据获取请求为所述至少两个数据获取请求中除所述第一数据获取请求以外的其他每个数据获取请求。

其中,所述第二判断模块包括:

第一判断单元,用于判断本地缓存中是否存在所述第一数据获取请求携带的数据标识对应的数据;

第二判断单元,用于当本地缓存中存在所述第一数据获取请求携带的数据标识对应的数据时,判断所述第一数据获取请求携带的数据标识对应的数据是否是过期数据;

确定单元,用于当所述第一数据获取请求携带的数据标识对应的数据不是过期数据时,将所述第一数据获取请求携带的数据标识对应的数据作为可用数据。

其中,述第一判断单元包括:

第一获取子单元,用于获取本地存储的数据标识列表,所述数据标识列表用于存储本地缓存中存储的所有数据的数据标识;

查找子单元,用于根据所述第一数据获取请求携带的数据标识查找所述数据标识列表;

第一确定子单元,用于当在所述数据标识列表中查找到所述第一数据获取请求携带的数据标识时,确定本地缓存中存在所述第一数据获取请求携带的数据标识对应的数据;

第二确定子单元,用于当在所述数据标识列表中未查找到所述第一数据获取请求携带的数据标识时,确定本地缓存中不存在所述第一数据获取请求携带的数据标识对应的数据。

其中,所述第二判断单元包括:

第二获取子单元,用于获取本地存储的数据标识与存储时间之间的对应关系;

第三获取子单元,用于获取本地的当前时间;

第四获取子单元,用于在所述对应关系中获取所述第一数据获取请求携带的数据标识对应的存储时间,所述存储时间为在所述当前时间之前、最近一次在本地缓存中存储所述第一数据获取请求携带的数据标识对应的数据的存储时间;

计算子单元,用于计算所述当前时间与所述存储时间之间的时间差值;

判断子单元,用于判断所述时间差值是否大于预设时间差阈值;

第三确定子单元,用于当所述时间差值大于所述预设时间差阈值时,确定所述第一数据获取请求携带的数据标识对应的数据是过期数据;

第四确定子单元,用于当所述时间差值小于或等于所述预设时间差阈值时,确定所述第一数据获取请求携带的数据标识对应的数据不是过期数据。

进一步地,所述装置还包括:

第三判断模块,用于判断是否接收到第三数据获取请求,所述第三数据获取请求至少携带数据标识;

第二提取模块,用于当接收到所述第三数据获取请求时,从所述第三数据获取请求中提取出数据标识;

第四判断模块,用于判断所述第三数据获取请求携带的数据标识是否与所述第一数据获取请求携带的数据标识相同;

第五判断模块,用于当所述第三数据获取请求携带的数据标识与所述第一数据获取请求携带的数据标识相同时,判断此时是否正在从存储服务器中获取所述第一数据获取请求携带的数据标识对应的可用数据,以及判断此时是否正在在本地缓存中存储所述第一数据获取请求携带的数据标识对应的可用数据;

第三获取模块,用于如果此时正在从存储服务器中获取所述第一数据获取请求携带的数据标识对应的可用数据,或者,正在在本地缓存中存储所述第一数据获取请求携带的数据标识对应的可用数据,则当在本地缓存中完成存储所述可用数据时,根据所述第三数据获取请求携带的数据标识在本地缓存中获取对应的可用数据。

本发明的实施例提供的技术方案可以包括以下有益效果:在本发明中,当接收到多个数据获取请求时,如果多个数据获取请求中是否存在至少两个携带的数据标识相同的数据获取请求,且,当本地缓存中未存储至少两个数据获取请求中的数据标识对应的数据时,无需分别依次根据至少两个数据获取请求中的每个数据请求携带的数据标识从存储服务器中获取对应的数据,只需根据至少两个数据获取请求中的一个数据请求携带的数据标识从存储服务器获取对应的数据,然后将获取的数据存储在本地缓存中,根据至少两个数据获取请求中的其他每个数据请求携带的数据标识分别依次从本地缓存中获取 对应的数据即可,由于从本地缓存中获取数据的时间非常短,且远远小于从存储服务器中获取数据的速度,因此,本发明实施例可以减少获取数据所需花费的时间,从而提高了获取数据的效率。

例如,假设,存储服务器根据一个数据标识从本地硬盘中获取对应的数据需要花费的时间是1毫秒,应用服务器根据一个数据标识从本地缓存中获取对应的数据需要花费的时间是1纳秒。当应用服务器接收到10个数据获取请求,且该10个数据获取请求中携带的数据标识均相同时;在现有技术中,如果本地缓存中未存储该10个数据获取请求中的一个获取请求,则应用服务器需要分别依次根据该10个数据获取请求从存储服务器中获取数据,一共需要花费10毫秒的时间。而在本发明实施例中,应用服务器通过10个获取请求中的一个获取请求从存储服务器中获取数据,需要花费1毫秒时间,并将获取的数据存储在本地缓存中,然后根据剩下9个获取请求分别依次从本地缓存中获取数据,需花费9纳秒;总共花费的时间约等于1毫秒,小于现有技术中的10毫秒,因此减少了获取数据所需花费的时间,从而提高了获取数据的效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种获取数据的系统示意图。

图2是根据一示例性实施例示出的一种获取数据的方法流程图。

图3是根据一示例性实施例示出的一种获取数据的方法流程图。

图4是根据一示例性实施例示出的一种获取数据的方法流程图。

图5是根据一示例性实施例示出的一种获取数据的装置框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种获取数据的系统,参见图1,该系统包括应用服务器B、存储服务器C和至少一个终端A。

其中,终端可以为手机、平板电脑或笔记本电脑等设备。

存储服务器包括一个或多个硬盘,用于在硬盘上以数据库的方式存储数据。

应用服务器用于向终端提供应用服务,其中,应用服务器可以为电商平台的后台服务器等。

应用服务器本地加载有缓存,用于存储数据,当应用服务器从存储服务器中获取一条数据时,可以将该数据存储至本地缓存,当下一次需要获取该数据时,可以直接从本地缓存中获取该数据,无需从存储服务器中获取该数据。

其中,终端可以与应用服务器进行交互,应用服务器还可以与存储服务器进行交互。

其中,应用服务器从本地缓存获取数据所需花费的时间很少,所需时间一般在纳秒级别。存储服务器从本地硬盘中获取数据所需花费的时间较长,所需时间一般在毫秒级别。

当应用服务器需要从存储服务器获取数据时,可以通过与存储服务器之间的数据连接发送携带数据标识的获取请求消息给存储服务器;存储服务器根据该获取请求消息从本地硬盘中获取该数据标识对应的数据,再通过该数据连接发送携带该数据的获取响应消息给应用服务器;应用服务器接收获取响应消息,从该获取响应消息中提取出该数据。

其中,从应用服务器通过该数据连接发送该获取请求消息,至存储服务器接收到该获取请求消息之间需要一段时间,从存储服务器通过该数据连接发送该获取响应消息,至应用服务器接收到该获取响应消息也需要一段时间,且当应用服务器与存储服务器之间的数据连接不稳定时,还可能影响消息传输速率,也可能带来传输时延,进而会影响获取数据的效率。

图2是根据一示例性实施例示出的一种获取数据的方法的流程图,该方法应用于应用服务器中,参见图2,该方法括以下步骤。

在步骤S101中,接收多个数据获取请求。

在本发明实施例中,多个数据获取请求中的每个数据获取请求均至少携带数据标识。数据标识可唯一标识数据,数据标识可以为数据的名称和/或编号等。

其中,多个数据获取请求可以是同一终端发送的数据获取请求,也可以是不同的终端分别发送的数据获取请求。

多个数据获取请求可以是应用服务器在同一时刻接收的数据获取请求,也可以是应 用服务器在单位时间段内获取的数据获取请求,单位时间段可以为10秒、30秒或1分钟等等,本发明对此不加以限定。

在步骤S102中,从每个数据获取请求中分别提取出数据标识。

在步骤S103中,判断多个数据获取请求中是否存在至少两个携带的数据标识相同的数据获取请求。

其中,多个数据获取请求中可能存在几个携带的数据标识相同的数据获取请求。

例如,有三个终端均要访问同一网页,这三个终端均发送携带该网页的标识的数据获取请求给应用服务器;该网页的标识可以为该网页的URL(Uniform Resource Locator,统一资源定位符),这样,应用服务器接收到的这三个数据获取请求携带的数据标识均相同。

当存在至少两个携带的数据标识相同的数据获取请求时,在步骤S104中,判断本地缓存中是否存在至少两个数据获取请求中的第一数据获取请求携带的数据标识对应的可用数据。

其中,第一数据获取请求为至少两个数据获取请求中的一个获取请求。在至少两个数据获取请求中,应用服务器可以将最先接收到的一个数据获取请求作为第一数据获取请求,或者,可以从至少两个数据获取请求中随机选择一个数据获取请求作为第一数据获取请求,当然,应用服务器从至少两个数据获取请求中选择出一个数据获取请求作为第一数据获取请求的方式有很多种,本发明对此不加以限定。

当存在至少两个携带的数据标识相同的数据获取请求时,为了确定出本地缓存是否存储了至少两个数据获取请求中的每个数据获取请求携带的数据标识对应的数据;无需根据至少两个数据获取请求中的每个数据获取请求携带的数据标识,分别依次在本地缓存中查找对应的可用数据。只需根据至少两个数据获取请求中的其中一个数据获取请求携带的数据标识,在本地缓存中查找对应的可用数据即可,只需查找一次就可以确定出本地缓存是否存储了至少两个数据获取请求中的每个数据获取请求携带的数据标识对应的数据;从而可以节省查找时间,进而提高了查找效率,以及节省了应用服务器的系统资源。

其中,可用数据可以为未过期的数据。

在本发明实施例中,存储服务器存储的是最新版本的数据,一般情况下,存储服务器会定期对存储的数据的版本进行更新,例如,存储服务器每隔预设时长的时间段就会对存储的数据的版本进行更新。

例如,定期更新某一网页页面中的某一板块的内容,例如,某一商品的价格等。

其中,当应用服务器从存储服务器获取一条数据后,会将该数据存储在应用服务器的本地缓存中,之后存储服务器可能会对该数据的版本进行更新。假设存储服务器对该数据版本进行了更新,由于应用服务器还未从存储服务器中获取该更新的数据,因此此时应用服务器的本地缓存中存储的并非是最新版本的该数据,而是旧版本的该数据,即,是过期的数据,且是不可用数据,这样,应用服务器就需要从存储服务器中获取最新版本的该数据。

其中,当不存在至少两个携带的数据标识相同的数据获取请求时,即,多个数据请求中的每个数据获取请求携带的数据标识均不相同,则对于多个数据请求中的任一数据获取请求,均执行如下步骤:根据该数据获取请求携带的数据标识在本地缓存中查找可用数据,当查找到对应的用数据时,从本地缓存中直接获取对应的可用数据;如果未查找到对应的可用数据,则根据该数据获取请求携带的数据标识,从存储服务器中获取对应的可用数据,并将获取的可用数据存储在本地缓存中。

当本地缓存中不存在至少两个数据获取请求中的第一数据获取请求携带的数据标识对应的可用数据时,在步骤S105中,根据第一数据获取请求携带的数据标识从存储服务器中获取对应的数据。

未找到对应的可用数据的原因有两种,包括:本地缓存中并未存储第一数据获取请求携带的数据标识对应的数据;或者,

本地缓存中存储了第一数据获取请求携带的数据标识对应的数据,但该数据是非可用数据,即,该数据是过期的数据。

因此,在本步骤中,应用服务器根据第一数据获取请求携带的数据标识生成获取请求消息,并发送给存储服务器;存储服务器接收该获取请求消息,从该获取请求消息中提取出数据标识,在本地硬盘中获取提取出的数据标识对应的数据,根据获取的数据生成获取响应消息,并发送给应用服务器;应用服务器接收存储服务器返回的获取响应消息,从获取响应消息中提取出该数据。

其中,当本地缓存中存在第一数据获取请求携带的数据标识对应的可用数据时,从本地缓存中获取对应的可用数据。

进一步地,判断第一数据获取请求中是否携带源地址,源地址为发送数据获取请求的发送方的地址;源地址可以为发送方的IP(Internet Protocol,网络之间互联的协议)地址、发送方MAC(Media Access Control,介质访问控制)地址、发送方的名称或发送方的编号等;在本发明实施例中,发送方可以为终端;当携带源地址时,根据该源地址,将获取的数据发送给对应的发送方。

在步骤S106中,将获取的数据存储在本地缓存中。

这样,之后在接收到一个数据获取请求且该一个数据获取请求携带的数据标识与第一数据获取请求携带的数据标识相同时,无需根据该一个数据获取请求携带的数据标识从存储服务器中获取对应的数据,而可以根据该一个数据获取请求携带的数据标识,直接从本地缓存中获取对应的数据,如此可以节省了获取数据的时间,进而提高获取数据的效率。

在步骤S107中,根据至少两个数据获取请求中每个第二数据获取请求携带的数据标识分别从本地缓存中获取对应的可用数据。

第二数据获取请求为至少两个数据获取请求中除第一数据获取请求以外的其他每个数据获取请求。

进一步地,对于第二数据获取请求中的任一数据获取请求,判断该数据获取请求中是否携带源地址,当携带源地址时,根据该源地址,将获取的可用数据发送给对应的发送方。对于第二数据获取请求中的其它米每一数据获取请求,均执行上述操作。

在本发明图2所示的实施例中,当接收到多个数据获取请求时,如果多个数据获取请求中是否存在至少两个携带的数据标识相同的数据获取请求,且,当本地缓存中未存储至少两个数据获取请求中的数据标识对应的数据时,无需分别依次根据至少两个数据获取请求中的每个数据请求携带的数据标识从存储服务器中获取对应的数据,只需根据至少两个数据获取请求中的一个数据请求携带的数据标识从存储服务器获取对应的数据,然后将获取的数据存储在本地缓存中,根据至少两个数据获取请求中的其他每个数据请求携带的数据标识分别依次从本地缓存中获取对应的数据即可,由于从本地缓存中获取数据的时间非常短,且远远小于从存储服务器中获取数据的速度,因此,本发明实施例可以减少获取数据所需花费的时间,从而提高了获取数据的效率。

例如,假设,存储服务器根据一个数据标识从本地硬盘中获取对应的数据需要花费的时间是1毫秒,应用服务器根据一个数据标识从本地缓存中获取对应的数据需要花费的时间是1纳秒。当应用服务器接收到10个数据获取请求,且该10个数据获取请求中携带的数据标识均相同时;在现有技术中,如果本地缓存中未存储该10个数据获取请求中的一个获取请求,则应用服务器需要分别依次根据该10个数据获取请求从存储服务器中获取数据,一共需要花费10毫秒的时间。而在本发明实施例中,应用服务器通过10个获取请求中的一个获取请求从存储服务器中获取数据,需要花费1毫秒时间,并将获取的数据存储在本地缓存中,然后根据剩下9个获取请求分别依次从本地缓存中获取数据,需花费9纳秒;总共花费的时间约等于1毫秒,小于现有技术中的10毫秒,因此减 少了获取数据所需花费的时间,从而提高了获取数据的效率。

在本发明另一实施例中,参加图3,步骤S104包括:

在步骤S201中,判断本地缓存中是否存在第一数据获取请求携带的数据标识对应的数据。

其中,当应用服务器第一次在本地缓存中存储一条数据时,创建一个数据标识列表,然后将存储的数据的数据标识存储在该数据标识列表中。

之后每当应用服务器在本地缓存中存储一条数据时,就将存储的数据的数据标识存储在该数据标识列表中;以及,每当应用服务器在本地缓存中删除一条数据时,就在数据标识列表中删除该删除的数据的数据标识。

这样,数据标识列表中就包括了本地缓存存储的所有数据的数据标识。

因此,在判断本地缓存中是否存在数据标识对应的数据时,就可以获取该数据标识列表,数据标识列表用于存储本地缓存中存储的所有数据的数据标识;查找该数据标识列表;当在该数据标识列表中查找到该数据标识时,确定本地缓存中存在第一数据获取请求携带的数据标识对应的数据;当在该数据标识列表中未查找到该数据标识时,确定本地缓存中不存在第一数据获取请求携带的数据标识对应的数据。

当本地缓存中存在第一数据获取请求携带的数据标识对应的数据时,在步骤S202中,判断第一数据获取请求携带的数据标识对应的数据是否是过期数据。

其中,当应用服务器第一次在本地缓存中存储一条数据时,获取存储该数据的存储时间,然后在本地创建数据标识与存储时间之间的对应关系,并将该数据的数据标识和存储该数据的存储时间添加至上述对应关系中;

之后每当服务器在本地缓存存储一条数据时,获取该存储的数据的存储时间,判断上述对应关系中是否包括该存储的数据的数据标识的记录,如果上述对应关系中包括该存储的数据的数据标识的记录,则利用获取的存储时间替换该记录中的存储时间;如果上述对应关系中不包括该存储的数据的数据标识的记录,则将该存储的数据的数据标识与该存储时间添加至上述对应关系中。

以及,每当应用服务器从本地缓存中删除一条数据时,则从上述对应关系中获取包括该删除的数据的记录,并从上述对应关系中删除该记录。

因此,在判断第一数据获取请求携带的数据标识对应的数据是否是过期数据时,可以获取本地存储的数据标识与存储时间之间的对应关系;然后,获取本地的当前时间,该当前时间为应用服务器的当前时间;然后在上述对应关系中获取该数据标识对应的存 储时间;该存储时间为最近一次在本地缓存中存储第一数据获取请求携带的数据标识对应的数据的存储时间;计算该当前时间与该存储时间之间的时间差值;判断该时间差值是否大于预设时间差阈值;当该时间差值大于预设时间差阈值时,说明存储服务器已经对该数据标识对应的数据的版本进行了更新,则确定本地缓存中存储的、第一数据获取请求携带的数据标识对应的数据是过期数据;当时间差值小于或等于预设时间差阈值时,说明存储服务器还未对该数据标识对应的数据的版本进行更新,则确定本地缓存中存储的、第一数据获取请求携带的数据标识对应的数据不是过期数据。

其中,当本地缓存中不存在第一数据获取请求携带的数据标识对应的数据时,则确定本地缓存中不存在第一数据获取请求携带的数据标识对应的可用数据。

当第一数据获取请求携带的数据标识对应的数据不是过期数据时,在步骤S203中,将本地缓存中存储的、第一数据获取请求携带的数据标识对应的数据作为可用数据。

其中,当第一数据获取请求携带的数据标识对应的数据是过期数据时,则确定本地缓存中不存在第一数据获取请求携带的数据标识对应的可用数据。

在应用服务器根据多个数据获取请求获取数据的过程中,很可能又接收到某一终端发送的携带数据标识的一个数据获取请求,记为第三数据获取请求,为了提高根据第三数据获取请求获取数据的效率,在本发明又一实施例提供了一种获取数据的方法,参见图4,该方法包括如下步骤:

在步骤S301中,判断是否接收到第三数据获取请求。

第三数据获取请求为某一终端发送的一个数据获取请求;第三数据获取请求至少携带数据标识。

当接收到第三数据获取请求时,在步骤S302中,从第三数据获取请求中提取出数据标识。

在步骤S303中,判断第三数据获取请求中的数据标识是否与至少两个数据获取请求中的第一数据获取请求携带的数据标识相同。

具体地,将从第三数据获取请求中提取出的数据标识与第一数据获取请求携带的数据标识进行比较,如此可以确定出第三数据获取请求中的数据标识是否与第一数据获取请求携带的数据标识相同。

当第三数据获取请求中的数据标识与第一数据获取请求携带的数据标识相同时,在步骤S304中,判断此时是否正在从存储服务器中获取所述第一数据获取请求携带的数据标识对应的可用数据,以及判断此时是否正在在本地缓存中存储所述第一数据获取请求 携带的数据标识对应的可用数据。

为了提高获取数据的效率,当第三数据获取请求中的数据标识与至少两个数据获取请求中的第一数据获取请求携带的数据标识相同时,需要判断此时是否正在从存储服务器中获取第一数据获取请求携带的数据标识对应的可用数据,以及判断此时是否正在在本地缓存中存储至少两个数据获取请求中的一个数据获取请求携带的数据标识对应的可用数据。

如果此时正在从存储服务器中获取第一数据获取请求携带的数据标识对应的可用数据,或者,此时正在在本地缓存中存储所述第一数据获取请求携带的数据标识对应的可用数据,在步骤S305中,当在本地缓存中完成存储可用数据时,根据第三数据获取请求携带的数据标识在本地缓存中获取对应的可用数据。

其中,如果此时正在从存储服务器中获取至少两个数据获取请求中的一个数据获取请求携带的数据标识对应的可用数据,或者,正在在本地缓存中存储至少两个数据获取请求中的一个数据获取请求携带的数据标识对应的可用数据;说明可用数据此时还并未存储在本地缓存中;这样根据第三数据获取请求中携带的数据标识在本地缓存中是无法获取到对应的可用数据的;此时只能根据第三数据获取请求从存储服务器中数据,但是,由于从存储服务器中获取数据的效率较低,从存储服务器中获取数据会占用存储服务器的系统资源。

因此,在本发明实施例中,无需根据第三数据获取请求中的数据标识从存储服务器中获取对应的数据,而是进行等待,当在本地缓存中完成存储至少两个数据获取请求中的一个数据获取请求携带的数据标识对应的可用数据时,直接根据第三数据获取请求中的数据标识在本地获取对应的数据。如此,可以提高获取数据的效率,且可以避免过多占用存储服务器的系统资源。

图5是根据一示例性实施例示出的一种获取数据的装置框图。参照图5,该装置包括:

接收模块11,用于接收多个数据获取请求;所述多个数据获取请求中的每个数据获取请求均至少携带数据标识;

第一提取模块12,用于从每个数据获取请求中分别提取出数据标识;

第一判断模块13,用于判断所述多个数据获取请求中是否存在至少两个携带的数据标识相同的数据获取请求;

第二判断模块14,用于当存在至少两个携带的数据标识相同的数据获取请求时,判 断本地缓存中是否存在所述至少两个数据获取请求中的第一数据获取请求携带的数据标识对应的可用数据,所述第一数据获取请求为所述至少两个数据获取请求中的一个获取请求;

第一获取模块15,用于当本地缓存中不存在所述至少两个数据获取请求中的第一数据获取请求携带的数据标识对应的可用数据时,根据所述第一数据获取请求携带的数据标识从存储服务器中获取对应的数据;并将获取的数据存储在本地缓存中;

第二获取模块16,用于根据所述至少两个数据获取请求中第二数据获取请求携带的数据标识分别从本地缓存中获取对应的可用数据;第二数据获取请求为所述至少两个数据获取请求中除所述第一数据获取请求以外的其他每个数据获取请求。

在本发明图5所示的实施例中,当接收到多个数据获取请求时,如果多个数据获取请求中是否存在至少两个携带的数据标识相同的数据获取请求,且,当本地缓存中未存储至少两个数据获取请求中的数据标识对应的数据时,无需分别依次根据至少两个数据获取请求中的每个数据请求携带的数据标识从存储服务器中获取对应的数据,只需根据至少两个数据获取请求中的一个数据请求携带的数据标识从存储服务器获取对应的数据,然后将获取的数据存储在本地缓存中,根据至少两个数据获取请求中的其他每个数据请求携带的数据标识分别依次从本地缓存中获取对应的数据即可,由于从本地缓存中获取数据的时间非常短,且远远小于从存储服务器中获取数据的速度,因此,本发明实施例可以减少获取数据所需花费的时间,从而提高了获取数据的效率。

例如,假设,存储服务器根据一个数据标识从本地硬盘中获取对应的数据需要花费的时间是1毫秒,应用服务器根据一个数据标识从本地缓存中获取对应的数据需要花费的时间是1纳秒。当应用服务器接收到10个数据获取请求,且该10个数据获取请求中携带的数据标识均相同时;在现有技术中,如果本地缓存中未存储该10个数据获取请求中的一个获取请求,则应用服务器需要分别依次根据该10个数据获取请求从存储服务器中获取数据,一共需要花费10毫秒的时间。而在本发明实施例中,应用服务器通过10个获取请求中的一个获取请求从存储服务器中获取数据,需要花费1毫秒时间,并将获取的数据存储在本地缓存中,然后根据剩下9个获取请求分别依次从本地缓存中获取数据,需花费9纳秒;总共花费的时间约等于1毫秒,小于现有技术中的10毫秒,因此减少了获取数据所需花费的时间,从而提高了获取数据的效率。

其中,所述第二判断模块14包括:

第一判断单元,用于判断本地缓存中是否存在所述第一数据获取请求携带的数据标识对应的数据;

第二判断单元,用于当本地缓存中存在所述第一数据获取请求携带的数据标识对应的数据时,判断所述第一数据获取请求携带的数据标识对应的数据是否是过期数据;

确定单元,用于当所述第一数据获取请求携带的数据标识对应的数据不是过期数据时,将所述第一数据获取请求携带的数据标识对应的数据作为可用数据。

其中,所述第一判断单元包括:

第一获取子单元,用于获取本地存储的数据标识列表,所述数据标识列表用于存储本地缓存中存储的所有数据的数据标识;

查找子单元,用于根据所述第一数据获取请求携带的数据标识查找所述数据标识列表;

第一确定子单元,用于当在所述数据标识列表中查找到所述第一数据获取请求携带的数据标识时,确定本地缓存中存在所述第一数据获取请求携带的数据标识对应的数据;

第二确定子单元,用于当在所述数据标识列表中未查找到所述第一数据获取请求携带的数据标识时,确定本地缓存中不存在所述第一数据获取请求携带的数据标识对应的数据。

其中,所述第二判断单元包括:

第二获取子单元,用于获取本地存储的数据标识与存储时间之间的对应关系;

第三获取子单元,用于获取本地的当前时间;

第四获取子单元,用于在所述对应关系中获取所述第一数据获取请求携带的数据标识对应的存储时间,所述存储时间为在所述当前时间之前、最近一次在本地缓存中存储所述第一数据获取请求携带的数据标识对应的数据的存储时间;

计算子单元,用于计算所述当前时间与所述存储时间之间的时间差值;

判断子单元,用于判断所述时间差值是否大于预设时间差阈值;

第三确定子单元,用于当所述时间差值大于所述预设时间差阈值时,确定所述第一数据获取请求携带的数据标识对应的数据是过期数据;

第四确定子单元,用于当所述时间差值小于或等于所述预设时间差阈值时,确定所述第一数据获取请求携带的数据标识对应的数据不是过期数据。

进一步地,所述装置还包括:

第三判断模块,用于判断是否接收到第三数据获取请求,所述第三数据获取请求至少携带数据标识;

第二提取模块,用于当接收到所述第三数据获取请求时,从所述第三数据获取请求中提取出数据标识;

第四判断模块,用于判断所述第三数据获取请求携带的数据标识是否与所述第一数据获取请求携带的数据标识相同;

第五判断模块,用于当所述第三数据获取请求携带的数据标识与所述第一数据获取请求携带的数据标识相同时,判断此时是否正在从存储服务器中获取所述第一数据获取请求携带的数据标识对应的可用数据,以及判断此时是否正在在本地缓存中存储所述第一数据获取请求携带的数据标识对应的可用数据;

第三获取模块,用于如果此时正在从存储服务器中获取所述第一数据获取请求携带的数据标识对应的可用数据,或者,正在在本地缓存中存储所述第一数据获取请求携带的数据标识对应的可用数据,则当在本地缓存中完成存储所述可用数据时,根据所述第三数据获取请求携带的数据标识在本地缓存中获取对应的可用数据。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1