数据查找方法与装置制造方法及图纸

技术编号:14504326 阅读:59 留言:0更新日期:2017-01-31 12:16
本发明专利技术提供了一种数据查找方法与装置。其中数据查找方法包括:接收数据获取请求,从对应数据库的缓存中查找数据获取请求所请求的数据;在从对应数据库的缓存中没有查找到所请求的数据的情况下,从对应数据库的缓存中获取所请求的数据对应的令牌;在获取到所述令牌的情况下,访问对应数据库以查找所请求的数据。本发明专利技术的技术方案,可以解决由于并发请求太多而导致数据库访问压力过大的问题。

【技术实现步骤摘要】

本专利技术涉及一种计算机技术及互联网领域,特别涉及一种数据查找方法与装置
技术介绍
相关技术中,为了提高网站访问速度,一些大型的、需要频繁访问数据库的网站通常采用分布式的高速缓存系统。相关技术中,分布式的高速缓存系统的工作流程为:先检查客户端的请求数据是否在内存缓存中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在内存缓存中,则到数据库中查找请求的数据,在数据库中查找到请求的数据后,从数据库中获取该数据,并将从数据库中获取的数据返回给客户端,同时将数据缓存一份到内存中;每次更新数据库的同时更新内存缓存中的数据,保证一致性。根据上述工作流程中可知,在相关技术中,当请求的数据不在内存时,转而到数据库中查找,假设当前查找到数据是热门数据,同时有多个并发请求,则处理该多个请求的进程同时都将到数据库查找请求的数据,如果并发请求过多,例如,对于当前的热门消息,可能同时有上万甚至上十万、百万的获取请求,这将导致数据库的访问压力过大,进而导致拥塞。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的数据存储方案。根据本专利技术的一个方面,本专利技术提供了一种数据查找方法包括:接收数据获取请求,从对应数据库的缓存中查找所述数据获取请求所请求的数据;在从所述对应数据库的缓存中没有查找到所请求的数据的情况下,从所述对应数据库的缓存中获取所请求的数据对应的令牌;在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。可选地,还包括:在获取到所述令牌后,锁定所述令牌,以使所述令牌无法再被获取。可选地,还包括:从所述对应数据库获取所请求的数据,将所请求的数据返回给请求方并将所请求的数据存储在所述对应数据库的缓存中。可选地,在将所请求的数据存储在所述对应数据库的缓存中之后,所述方法还包括:释放所述令牌,使所述令牌能够再被获取。可选地,还包括:在没有获取到所述令牌的情况下,等待预定时长t1后,再次从所述对应数据库的缓存中查找所请求的数据。可选地,在等待所述预定时长t1后,再次从所述对应数据库的缓存中查找所请求的数据时,若仍未查找到所请求的数据,所述方法还包括:步骤1,判断等待的次数是否达到预设阈值或者等待的总时长是否超过预设阈值,如果是,则执行步骤4,否则,执行步骤2;步骤2,设置新的预定时长t2=前次预定时长t1+Δt,其中,Δt为有理数;步骤3,等待新的预定时长t2后,再次从所述对应数据库的缓存中查找所请求的数据,如果查找到所述所请求的数据,则返回给所述数据的请求方,如果仍未查找到,则返回执行步骤1;步骤4,向所述数据的请求方返回未查询到所请求的数据的信息。可选地,在等待所述预定时长后,再次从所述对应数据库的缓存中查找所请求的数据时,若查找到所请求的数据,所述方法还包括:将查找到的所请求的数据返回给所述数据的请求方。根据本专利技术的另一个方面,提供了一种数据查找装置,包括:接收模块,用于接收数据获取请求;第一查找模块,用于从对应数据库的缓存中查找所述数据获取请求所请求的数据;第一获取模块,用于在所述第一查找模块从所述对应数据库的缓存中没有查找到所述数据获取请求所请求的数据的情况下,从所述对应数据库的缓存中获取所请求的数据的令牌;第二查找模块,用于在所述第一获取模块从所述对应数据库的缓存中获取到所述所请求的数据的令牌的情况下,访问所述对应数据库以查找所述所请求的数据。可选地,还包括:执行模块,用于在所述第一获取模块从所述对应数据库的缓存中获取到所述所请求的数据的令牌的情况下,锁定所述令牌,使所述令牌不会再被获取;可选地,还包括:缓存模块,用于将所述第二查找模块查找到的数据缓存到所述对应数据库的缓存中;发送模块,用于将所述第二查找模块查找到的数据返回给所述数据的请求方。可选地,还包括:释放模块,用于在所述缓存模块将查找到的数据缓存到所述对应数据库的缓存中之后,释放所述令牌,使所述令牌能够被获取。可选地,还包括:休眠模块,用于在所述第一获取模块没有从所述对应数据库的缓存中获取到所述所请求的数据的令牌的情况下,等待预定时长,并在预定时长到达时触发所述第一查找模块;判断模块,用于在所述第一查找模块在所述休眠模块触发下没有从所述对应数据库的缓存中查找所请求的数据的情况下,判断所述休眠模块当前休眠的次数是否达到预设阈值或者所述休眠模块休眠的总时长是否超过预设阈值,如果是,则触发发送模块向所述数据的请求方返回未查询到所请求的数据的指示,如果否,则置新的预定时长t2=前次预定时长t1+Δt,再触发所述休眠模块,其中,Δt为有理数。本专利技术的数据查找方案,在接收到数据获取请求时,如果请求的数据没有存储在对应数据库的缓存中,则试图从对应数据库的缓存中获取请求的数据的令牌,只有在获取到该数据的令牌的情况下,才访问对应数据库以查找所请求的数据,从而可以通过控制缓存中存储的数据的令牌的数量,避免并发情况下所有进程都去数据库中查找数据而导致数据库的访问压力过大的问题,进而可以提高数据的查找效率。根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。附图说明后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。在附图中:图1是根据本专利技术实施例一的数据查找方法的流程示意图;图2是根据本专利技术实施例二的数据查找方法的流程示意图;图3是根据本专利技术实施例三的数据查找装置的结构示意图;以及图4是根据本专利技术实施例三的可选数据查找装置的结构示意图。具体实施方式下文中将参考附图并结合实施例来详细说明本专利技术。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。实施例一图1是根据本专利技术实施例一的数据查找方法的流程示意图,如图1所示,本实施例提供的数据查找方法主要包括以下步骤:步骤S102,接收到数据获取请求,从对应数据库的缓存中查找所述数据获取请求所请求的数据;在本实施例中,为了提高数据库的访问速度,将数据库中部分数据备份在缓存中,在接收到查询请求时,首先从对应数据库的缓存中查找请求的数据,如果从对应数据库的缓存中查找到请求的数据,则将查找到的数据返回给数据的请求方,如果在对应数据库的缓存中没有查找到所请求的数据,则执行步本文档来自技高网...

【技术保护点】
一种数据查找方法,包括:接收数据获取请求,从对应数据库的缓存中查找所述数据获取请求所请求的数据;在从所述对应数据库的缓存中没有查找到所请求的数据的情况下,从所述对应数据库的缓存中获取所请求的数据对应的令牌;在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。

【技术特征摘要】
1.一种数据查找方法,包括:
接收数据获取请求,从对应数据库的缓存中查找所述数据获取请求所请求
的数据;
在从所述对应数据库的缓存中没有查找到所请求的数据的情况下,从所述
对应数据库的缓存中获取所请求的数据对应的令牌;
在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
2.根据权利要求1所述的方法,还包括:
在获取到所述令牌后,锁定所述令牌,以使所述令牌无法再被获取。
3.根据权利要求1或2所述的方法,还包括:
从所述对应数据库获取所请求的数据,将所请求的数据返回给请求方并将
所请求的数据存储在所述对应数据库的缓存中。
4.根据权利要求3所述的方法,其中,在将所请求的数据存储在所述对应
数据库的缓存中之后,所述方法还包括:
释放所述令牌,使所述令牌能够再被获取。
5.根据权利要求1或2所述的方法,还包括:
在没有获取到所述令牌的情况下,等待预定时长t1后,再次从所述对应数
据库的缓存中查找所请求的数据。
6.根据权利要求5所述的方法,其中,在等待所述预定时长t1后,再次从
所述对应数据库的缓存中查找所请求的数据时,若仍未查找到所请求的数据,
所述方法还包括:
步骤1,判断等待的次数是否达到预设阈值或者等待的总时长是否超过预
设阈值,如果是,则执行步骤4,否则,执行步骤2;
步骤2,设置新的预定时长t2=前次预定时长t1+Δt,其中,Δt为有理数;
步骤3,等待新的预定时长t2后,再次从所述对应数...

【专利技术属性】
技术研发人员:郭军梁敬彪曾志海
申请(专利权)人:北京奇虎科技有限公司奇智软件北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1