【技术实现步骤摘要】
本专利技术涉及一种计算机技术及互联网领域,特别涉及一种数据获取方法与装置。
技术介绍
相关技术中,为了提高网站访问速度,一些大型的、需要频繁访问数据库的网站通常采用分布式的高速缓存系统。相关技术中,分布式的高速缓存系统的工作流程为:先检查客户端的请求数据是否在内存缓存中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在内存缓存中,则到数据库中查找请求的数据,在数据库中查找到请求的数据后,从数据库中获取该数据,并将从数据库中获取的数据返回给客户端,同时将数据缓存一份到内存中;每次更新数据库的同时更新内存缓存中的数据,保证一致性。在相关技术中,缓存失效策略是LRU(最近最少使用)加上到期失效策略。当向对应数据库的存储数据时,每个数据将设置一个过期时间,当为数据库缓存分配的内存使用完毕,则首先会替换掉已失效的数据,其次是最近最少使用的数据。在相关技术中,系统并不会监测数据是否失效,而是在获取数据时检测,也就是说在获取数据时,如果从缓存中查找到对应的数据,则先根据该数据的过期时间,判断该数据是否过期,如果过期,则返回空,即没有从缓存中获取到数据,则需要到数据库中去获取数据。采用上述机制,即使该数据在过期前很近的时间内被访问过,该数据也不会被更新,而是等待过期时间到达时,自动过期。根据上述工作流程中可知,在相关技术中,当请求的数据在内存内已过期时,需要转到数据库中查找,假 >设当前查找到数据是热门数据,同时有多个并发请求,则处理该多个请求的进程同时都将到数据库查找请求的数据,如果并发请求过多,例如,对于当前的热门消息,可能同时有上万甚至上十万、百万的获取请求,这将导致数据库的访问压力过大,进而导致拥塞。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的数据获取方案。根据本专利技术的一个方面,本专利技术提供了一种数据获取方法包括:接收数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请求的数据;若所述对应数据库的缓存中存储有所述数据,进一步获取所述数据的第一预定时间;判断当前时间是否已超出所述超时时间,其中,所述超时时间小于所述数据的过期时间;若所述当前时间未超出所述超时时间,则将所述对应数据库的缓存中存储的所述数据返回给数据请求方。可选地,若所述当前时间超出所述第一预定时间,所述方法还包括:判断所述当前时间是否超出所述过期时间;若所述当前时间未超出所述过期时间,从所述对应数据库的缓存中获取所述数据对应的令牌;在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。可选地,还包括:当在所述对应数据库中查找到所请求的数据时,将所述数据返回给数据请求方,并使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据。可选地,还包括:重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。可选地,若未获取到所述令牌,所述方法还包括:将所述对应数据库的缓存中存储的所述数据返回给数据请求方。可选地,所述超时时间和过期时间与所述数据关联且存储在所述对应数据库的缓存中。根据本专利技术的另一个方面,提供了一种数据获取装置,包括:接收模块,用于接收数据获取请求;第一查找模块,用于从对应数据库的缓存中查找所述数据获取请求所请求的数据;第一获取模块,用于在所述第一查找模块查找从所述对应数据库的缓存中查找到所述数据的情况下,获取所述数据的超时时间,其中,所述超时时间小于所述数据的过期时间;第一判断模块,用于判断当前时间是否已超出所述超时时间;发送模块,用于在所述第一判断模块确定所述当前时间没有超出所述超时时间的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。可选地,还包括:第二判断模块,用于在所述第一判断模块确定所述当前时间超出所述超时时间的情况下,判断当前时间是否超出所述过期时间;第二获取模块,用于在所述第二判断模块判断所述当前时间未超出所述过期时间的情况下,从所述对应数据库的缓存中获取所述数据对应的令牌;第二查找模块,用于在所述第二获取模块获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。可选地,所述装置还包括:缓存模块,用于在所述第二查找模块从所述对应数据库中查找到所述数据的情况下,使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据;所述发送模块还用于将所述对应数据库中查找到的所述数据返回给数据请求方。可选地,还包括:执行模块,用于重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。可选地,所述发送模块还用于在所述第二获取模块未获取到所述令牌的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。可选地,所述超时时间和过期时间与所述数据关联且存储在所述对应数据库的缓存中。本专利技术的数据获取方案,在接收到数据获取请求时,在从对应数据库的缓存中查找到请求的数据后,判断当前时间是否已超出该数据的第一预定时间,如果没有,将对应数据库的缓存中存储的数据返回给数据请求方,否则从数据库中去获取该数据,然后使用从数据库中获取数据内容重建缓存,从而可以在数据过期前,重建该数据的缓存,避免了在数据过期后,并发多个数据请求,所有请求都去数据库中查找数据而导致数据库的访问压力过大的问题,进而可以提高数据的查找效率。根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。附图说明后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。在附图中:图1是根据本专利技术实施例一的数据获取方法的流程示意图;图2是根据本专利技术实施例二的数据获取方法的流程示意图;图3是根据本专利技术实施例三的数据获取装置的结构示意图;以及图4是根据本专利技术实施例三的可选数据获取装置的结构示意图。具体实施方式下文中将参考附图并结合实施例来详细说明本专利技术。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。实施例一图1是根据本专利技术实施例一的数据获取方法的流程示意图,如图1所示,本实施例提供的数据获取方法主要包括以下步骤:步骤S102,接收到数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请求的数据;在本实施例中,为了提高数据库的访问速度,将数本文档来自技高网...
【技术保护点】
一种数据获取方法,包括:接收数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请求的数据;若所述对应数据库的缓存中存储有所述数据,进一步获取所述数据的超时时间;判断当前时间是否已超出所述超时时间,其中,所述超时时间小于所述数据的过期时间;若所述当前时间未超出所述超时时间,则将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
【技术特征摘要】
1.一种数据获取方法,包括:
接收数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请
求的数据;
若所述对应数据库的缓存中存储有所述数据,进一步获取所述数据的超时
时间;
判断当前时间是否已超出所述超时时间,其中,所述超时时间小于所述数
据的过期时间;
若所述当前时间未超出所述超时时间,则将所述对应数据库的缓存中存储
的所述数据返回给数据请求方。
2.根据权利要求1所述的方法,其中,若所述当前时间超出所述超时时间,
所述方法还包括:
判断所述当前时间是否超出所述过期时间;
若所述当前时间未超出所述过期时间,从所述对应数据库的缓存中获取所
述数据对应的令牌;
在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
3.根据权利要求2所述的方法,还包括:
当在所述对应数据库中查找到所请求的数据时,将所述数据返回给数据请
求方,并使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中
的所述数据。
4.根据权利要求3所述的方法,还包括:
重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。
5.根据权利要求2或3所述的方法,其中,若未获取到所述令牌,所述方
法还包括:
将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
6.根据权利要求1-5中任一项所述的方法,其中,所述超时时间和过期时
间与所述数据关联且存储在所述对应数据库的缓存中。
7.一种数据获取装置,包括:
接收模块,用于...
【专利技术属性】
技术研发人员:郭军,任建峰,
申请(专利权)人:北京奇虎科技有限公司,奇智软件北京有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。