数据获取方法与装置的制造方法

文档序号:9839631阅读:204来源:国知局
数据获取方法与装置的制造方法
【技术领域】
[0001]本发明涉及一种计算机技术及互联网领域,特别涉及一种数据获取方法与装置。
【背景技术】
[0002]相关技术中,为了提高网站访问速度,一些大型的、需要频繁访问数据库的网站通常采用分布式的高速缓存系统。
[0003]相关技术中,分布式的高速缓存系统的工作流程为:先检查客户端的请求数据是否在内存缓存中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在内存缓存中,则到数据库中查找请求的数据,在数据库中查找到请求的数据后,从数据库中获取该数据,并将从数据库中获取的数据返回给客户端,同时将数据缓存一份到内存中;每次更新数据库的同时更新内存缓存中的数据,保证一致性。
[0004]在相关技术中,缓存失效策略是LRU(最近最少使用)加上到期失效策略。当向对应数据库的存储数据时,每个数据将设置一个过期时间,当为数据库缓存分配的内存使用完毕,则首先会替换掉已失效的数据,其次是最近最少使用的数据。在相关技术中,系统并不会监测数据是否失效,而是在获取数据时检测,也就是说在获取数据时,如果从缓存中查找到对应的数据,则先根据该数据的过期时间,判断该数据是否过期,如果过期,则返回空,即没有从缓存中获取到数据,则需要到数据库中去获取数据。
[0005]采用上述机制,即使该数据在过期前很近的时间内被访问过,该数据也不会被更新,而是等待过期时间到达时,自动过期。根据上述工作流程中可知,在相关技术中,当请求的数据在内存内已过期时,需要转到数据库中查找,假设当前查找到数据是热门数据,同时有多个并发请求,则处理该多个请求的进程同时都将到数据库查找请求的数据,如果并发请求过多,例如,对于当前的热门消息,可能同时有上万甚至上十万、百万的获取请求,这将导致数据库的访问压力过大,进而导致拥塞。

【发明内容】

[0006]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据获取方案。
[0007]根据本发明的一个方面,本发明提供了一种数据获取方法包括:接收数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请求的数据;若所述对应数据库的缓存中存储有所述数据,进一步获取所述数据的第一预定时间;判断当前时间是否已超出所述超时时间,其中,所述超时时间小于所述数据的过期时间;若所述当前时间未超出所述超时时间,则将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
[0008]可选地,若所述当前时间超出所述第一预定时间,所述方法还包括:判断所述当前时间是否超出所述过期时间;若所述当前时间未超出所述过期时间,从所述对应数据库的缓存中获取所述数据对应的令牌;在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
[0009]可选地,还包括:当在所述对应数据库中查找到所请求的数据时,将所述数据返回给数据请求方,并使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据。
[0010]可选地,还包括:重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。
[0011]可选地,若未获取到所述令牌,所述方法还包括:将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
[0012]可选地,所述超时时间和过期时间与所述数据关联且存储在所述对应数据库的缓存中。
[0013]根据本发明的另一个方面,提供了一种数据获取装置,包括:接收模块,用于接收数据获取请求;第一查找模块,用于从对应数据库的缓存中查找所述数据获取请求所请求的数据;第一获取模块,用于在所述第一查找模块查找从所述对应数据库的缓存中查找到所述数据的情况下,获取所述数据的超时时间,其中,所述超时时间小于所述数据的过期时间;第一判断模块,用于判断当前时间是否已超出所述超时时间;发送模块,用于在所述第一判断模块确定所述当前时间没有超出所述超时时间的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
[0014]可选地,还包括:第二判断模块,用于在所述第一判断模块确定所述当前时间超出所述超时时间的情况下,判断当前时间是否超出所述过期时间;第二获取模块,用于在所述第二判断模块判断所述当前时间未超出所述过期时间的情况下,从所述对应数据库的缓存中获取所述数据对应的令牌;第二查找模块,用于在所述第二获取模块获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
[0015]可选地,所述装置还包括:缓存模块,用于在所述第二查找模块从所述对应数据库中查找到所述数据的情况下,使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据;所述发送模块还用于将所述对应数据库中查找到的所述数据返回给数据请求方。
[0016]可选地,还包括:执行模块,用于重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。
[0017]可选地,所述发送模块还用于在所述第二获取模块未获取到所述令牌的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
[0018]可选地,所述超时时间和过期时间与所述数据关联且存储在所述对应数据库的缓存中。
[0019]本发明的数据获取方案,在接收到数据获取请求时,在从对应数据库的缓存中查找到请求的数据后,判断当前时间是否已超出该数据的第一预定时间,如果没有,将对应数据库的缓存中存储的数据返回给数据请求方,否则从数据库中去获取该数据,然后使用从数据库中获取数据内容重建缓存,从而可以在数据过期前,重建该数据的缓存,避免了在数据过期后,并发多个数据请求,所有请求都去数据库中查找数据而导致数据库的访问压力过大的问题,进而可以提高数据的查找效率。
[0020]根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
【附图说明】
[0021]后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。在附图中:
[0022]图1是根据本发明实施例一的数据获取方法的流程示意图;
[0023]图2是根据本发明实施例二的数据获取方法的流程示意图;
[0024]图3是根据本发明实施例三的数据获取装置的结构示意图;以及
[0025]图4是根据本发明实施例三的可选数据获取装置的结构示意图。
【具体实施方式】
[0026]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0027]实施例一
[0028]图1是根据本发明实施例一的数据获取方法的流程示意图,如图1所示,本实施例提供的数据获取方法主要包括以下步骤:
[0029]步骤S102,接收到数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请求的数据;
[0030]在本实施例中,为了提高数据库的访问速度,将数据库中部分数据备份在缓存中,在接收到查询请求时,首先从数据库的缓存中查找请求的数据,在从数据库缓存中查找不到数据的情况下,再从数据库中获取。
[0031]步骤S104,获取所述对应数据库的缓存中存储的所述数据的超时时间,判断当前时间是否已超出所述超时时间,其中,所述超时时间〈所述数据的过期时间;
[0032]步骤S106,若所述当前时间未超出所述超时时间,则将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
[0033]在本实施例中,为了避免数据过期后,同时有多个请求查找该数据,而导致数据库的访问压力过大,在对应数据库的缓存的数据中增加一个字段,该字段用于指示数据的超时时间(time out),其中,数据的超时时间小于该数据的过期时间(expirat1n time)。
[0034]在本实施例中,当接收到数据获取请求时,从对应数据库的缓存查找到所请求的数据后,获取该数据的超时时间,然后判断当前时间是否已超过超时时间。例如,假设超时时间为数据缓存后的30秒,过期时间为数据缓存后的40秒,则假设当前时间为数据缓存后的20秒,则当前时间没有超过超时时间,直接将从对应数据库
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1