CN105608115A - 数据获取方法与装置 - Google Patents

数据获取方法与装置 Download PDF

Info

Publication number
CN105608115A
CN105608115A CN201510920961.9A CN201510920961A CN105608115A CN 105608115 A CN105608115 A CN 105608115A CN 201510920961 A CN201510920961 A CN 201510920961A CN 105608115 A CN105608115 A CN 105608115A
Authority
CN
China
Prior art keywords
data
time
buffer memory
correspondence database
module
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.)
Pending
Application number
CN201510920961.9A
Other languages
English (en)
Inventor
郭军
任建峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510920961.9A priority Critical patent/CN105608115A/zh
Publication of CN105608115A publication Critical patent/CN105608115A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种数据获取方法与装置。其中数据获取方法包括:接收数据获取请求,从对应数据库的缓存中查找到数据获取请求所请求的数据;若对应数据库的缓存中存储有数据,进一步获取数据的超时时间;判断当前时间是否已超出超时时间,其中,超时时间小于数据的过期时间;若当前时间未超出超时时间,则将对应数据库的缓存中存储的数据返回给数据请求方。本发明的技术方案,可以解决由于数据过期后并发请求太多而导致数据库访问压力过大的问题。

Description

数据获取方法与装置
技术领域
本发明涉及一种计算机技术及互联网领域,特别涉及一种数据获取方法与装置。
背景技术
相关技术中,为了提高网站访问速度,一些大型的、需要频繁访问数据库的网站通常采用分布式的高速缓存系统。
相关技术中,分布式的高速缓存系统的工作流程为:先检查客户端的请求数据是否在内存缓存中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在内存缓存中,则到数据库中查找请求的数据,在数据库中查找到请求的数据后,从数据库中获取该数据,并将从数据库中获取的数据返回给客户端,同时将数据缓存一份到内存中;每次更新数据库的同时更新内存缓存中的数据,保证一致性。
在相关技术中,缓存失效策略是LRU(最近最少使用)加上到期失效策略。当向对应数据库的存储数据时,每个数据将设置一个过期时间,当为数据库缓存分配的内存使用完毕,则首先会替换掉已失效的数据,其次是最近最少使用的数据。在相关技术中,系统并不会监测数据是否失效,而是在获取数据时检测,也就是说在获取数据时,如果从缓存中查找到对应的数据,则先根据该数据的过期时间,判断该数据是否过期,如果过期,则返回空,即没有从缓存中获取到数据,则需要到数据库中去获取数据。
采用上述机制,即使该数据在过期前很近的时间内被访问过,该数据也不会被更新,而是等待过期时间到达时,自动过期。根据上述工作流程中可知,在相关技术中,当请求的数据在内存内已过期时,需要转到数据库中查找,假设当前查找到数据是热门数据,同时有多个并发请求,则处理该多个请求的进程同时都将到数据库查找请求的数据,如果并发请求过多,例如,对于当前的热门消息,可能同时有上万甚至上十万、百万的获取请求,这将导致数据库的访问压力过大,进而导致拥塞。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据获取方案。
根据本发明的一个方面,本发明提供了一种数据获取方法包括:接收数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请求的数据;若所述对应数据库的缓存中存储有所述数据,进一步获取所述数据的第一预定时间;判断当前时间是否已超出所述超时时间,其中,所述超时时间小于所述数据的过期时间;若所述当前时间未超出所述超时时间,则将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
可选地,若所述当前时间超出所述第一预定时间,所述方法还包括:判断所述当前时间是否超出所述过期时间;若所述当前时间未超出所述过期时间,从所述对应数据库的缓存中获取所述数据对应的令牌;在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
可选地,还包括:当在所述对应数据库中查找到所请求的数据时,将所述数据返回给数据请求方,并使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据。
可选地,还包括:重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。
可选地,若未获取到所述令牌,所述方法还包括:将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
可选地,所述超时时间和过期时间与所述数据关联且存储在所述对应数据库的缓存中。
根据本发明的另一个方面,提供了一种数据获取装置,包括:接收模块,用于接收数据获取请求;第一查找模块,用于从对应数据库的缓存中查找所述数据获取请求所请求的数据;第一获取模块,用于在所述第一查找模块查找从所述对应数据库的缓存中查找到所述数据的情况下,获取所述数据的超时时间,其中,所述超时时间小于所述数据的过期时间;第一判断模块,用于判断当前时间是否已超出所述超时时间;发送模块,用于在所述第一判断模块确定所述当前时间没有超出所述超时时间的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
可选地,还包括:第二判断模块,用于在所述第一判断模块确定所述当前时间超出所述超时时间的情况下,判断当前时间是否超出所述过期时间;第二获取模块,用于在所述第二判断模块判断所述当前时间未超出所述过期时间的情况下,从所述对应数据库的缓存中获取所述数据对应的令牌;第二查找模块,用于在所述第二获取模块获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
可选地,所述装置还包括:缓存模块,用于在所述第二查找模块从所述对应数据库中查找到所述数据的情况下,使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据;所述发送模块还用于将所述对应数据库中查找到的所述数据返回给数据请求方。
可选地,还包括:执行模块,用于重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。
可选地,所述发送模块还用于在所述第二获取模块未获取到所述令牌的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
可选地,所述超时时间和过期时间与所述数据关联且存储在所述对应数据库的缓存中。
本发明的数据获取方案,在接收到数据获取请求时,在从对应数据库的缓存中查找到请求的数据后,判断当前时间是否已超出该数据的第一预定时间,如果没有,将对应数据库的缓存中存储的数据返回给数据请求方,否则从数据库中去获取该数据,然后使用从数据库中获取数据内容重建缓存,从而可以在数据过期前,重建该数据的缓存,避免了在数据过期后,并发多个数据请求,所有请求都去数据库中查找数据而导致数据库的访问压力过大的问题,进而可以提高数据的查找效率。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。在附图中:
图1是根据本发明实施例一的数据获取方法的流程示意图;
图2是根据本发明实施例二的数据获取方法的流程示意图;
图3是根据本发明实施例三的数据获取装置的结构示意图;以及
图4是根据本发明实施例三的可选数据获取装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例一
图1是根据本发明实施例一的数据获取方法的流程示意图,如图1所示,本实施例提供的数据获取方法主要包括以下步骤:
步骤S102,接收到数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请求的数据;
在本实施例中,为了提高数据库的访问速度,将数据库中部分数据备份在缓存中,在接收到查询请求时,首先从数据库的缓存中查找请求的数据,在从数据库缓存中查找不到数据的情况下,再从数据库中获取。
步骤S104,获取所述对应数据库的缓存中存储的所述数据的超时时间,判断当前时间是否已超出所述超时时间,其中,所述超时时间<所述数据的过期时间;
步骤S106,若所述当前时间未超出所述超时时间,则将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
在本实施例中,为了避免数据过期后,同时有多个请求查找该数据,而导致数据库的访问压力过大,在对应数据库的缓存的数据中增加一个字段,该字段用于指示数据的超时时间(timeout),其中,数据的超时时间小于该数据的过期时间(expirationtime)。
在本实施例中,当接收到数据获取请求时,从对应数据库的缓存查找到所请求的数据后,获取该数据的超时时间,然后判断当前时间是否已超过超时时间。例如,假设超时时间为数据缓存后的30秒,过期时间为数据缓存后的40秒,则假设当前时间为数据缓存后的20秒,则当前时间没有超过超时时间,直接将从对应数据库的缓存中查找到数据返回给客户端,本次数据获取结束。
在本发明实施例的一个可选实施方案中,如果当前时间超过超时时间,则可以进一步判断当前时间是否超过该数据的过期时间。若当前时间未超出过期时间,则从对应数据库的缓存中获取所述数据对应的令牌,然后在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
在具体应用中,可以按照该数据的键(KEY)从数据库中查找该数据,得到该数据的值(VALUE)。
例如,假设超时时间为数据缓存后的30秒,过期时间为数据缓存后的40秒,假设当前时间为数据缓存后的35秒,则当前时间超过了超时时间但没有超过过期时间,说明当前缓存的数据快过期了,因此,为了避免向数据请求方返回的数据不是最新的数据,可以访问对应数据库,从对应数据库中获取所请求的数据。进一步地,为了避免同时有太多的进程同时访问数据库,在本实施例中,为缓存的数据增加了有限数量的令牌,当确定当前时间超过超时时间但没有超过过期时间时,在本实施例的上述可选实施方式中,先从对应数据库的缓存中获取所述数据对应的令牌,在获取到令牌后,再访问对应数据库以查找所请求的数据,从而可以避免大量进程同时访问数据库所带来的拥堵,减小数据库的压力。
在本发明实施例的另一个可选实施方案中,在上述可选实施方案中,在从对应数据库中查找到所请求的数据的情况下,可以将从对应数据库中查找到的所请求的数据返回给数据请求方,并且,还可以使用从对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据。通过该实施方式,通过使得从对应数据库中查找到的数据更新所述对应数据库的缓存中的数据,使得其它数据请求者可以从缓存中获取到新的数据,提高了用户体验。
在本发明实施例的又一个可选实施方案中,在上述可选实施方案中,在从对应数据库中查找到所请求的数据的情况下,还可以释放该数据的令牌,从而使得该数据的令牌可以被重新获取。
例如,在第一次缓存某条数据时,该数据的超时时间为当前时间之后的25秒,过期时间为当前时间之后的30秒,则在当前时间之后的25秒时,接收到该数据的获取请求,则在从对应数据库的缓存中获取到该数据之后,获知该数据的超时时间,判断应该重建该数据的缓存,则从数据库中获取该数据,然后重建缓存,使用从数据库中获取的数据更新对应数据库的缓存中缓存的该数据。缓存的该数据的超时时间为更新时的时间之后的25秒,过期时间为更新时的时间之后的30秒,从而延长了该数据的过期时间。
在本发明实施例的另一个可选实施方案中,在使用从对应数据库中查找到的数据更新所述对应数据库的缓存中的数据之后,为了使得缓存中的数据不会过期,可以重置对应数据库的缓存中的所述数据的超时时间和过期时间。采用该可选实施方式,使用从数据库中查找到数据重建缓存,从而可以保证数据不会过期,避免了因为缓存的数据过期,而导致所有进程都到对应数据库中查找数据所带来的拥堵。
在具体应用中,可以按照该数据的键(KEY)从数据库中查找该数据,得到该数据的值(VALUE),使用从数据库中查找到的值,替换对应数据库的缓存中缓存的该数据的值。
可选地,在上述可选实施方式中,如果没有获取到令牌,可以将对应数据库的缓存中存储的数据返回给数据请求方。或者,也可以等待一段时间后再从对应数据库的缓存中查找所请求的数据。具体本实施例不作限定。
在本发明实施例的一个可选实施方案中,超时时间可以作为数据的内容的一部分,记录在数据中,通过预设分隔符与数据的内容主体分离。在对应数据库的缓存中缓存的数据一般包括两个部分,即键(KEY)和值(VALUE),其中,键部分记录的为数据的关键词,为检索的索引,而值部分记录的为数据的内容。在本实施例中,可以将超时时间记录在值部分,通过预设的分隔符将超时时间与数据实体内容部分分离。例如,分隔符可以为四个星号加上大括号,分隔符为终端符,前边该条数据的具体内容,例如某央视记者报道的新闻。
在本实施例中,超时时间具体可以根据该数据的访问频率来设置,例如,假设该数据每分钟10个访问请求,则可以设置:过期时间-超时时间=1分钟,即在数据过期前1分钟之内,接收到数据的获取请求后,则执行后续的步骤S106,如果该数据的访问频率比较低,例如,1分钟大概只有1个访问请求,则如果还按照上述方式设置,可能会出现在数据过程前1分钟之内没有数据的获取请求,从而对数据进行缓存重建,因此,可以将预定值设置小一些,例如,可以将超时时间设置在过期时间短2分钟。超时时间的具体取值本实施例不作限定。
通过本实施例提供的技术方案,通过在缓存数据过期前,重建缓存,从而避免了数据过期,进而解决了由于数据过期后,有大量并发请求到数据库中请求数据而导致数据库访问压力过大的问题。
采用上述的方式,只有在数据超时后且在数据过期时间到达前的情况下,有数据获取请求的情况才更新对应数据库的缓存中缓存的数据,这样可能导致在数据库更新后的一段时间内,数据获取请求还是只能获取到以前的数据的问题。在本发明实施例的一个可选实施方案中,还可以监测数据库,在更新数据时,主动重建缓存。因此,在该可选实施方式中,该方法还可以包括:检测到数据库存储的数据发生更新;使用更新后的内容,更新对应数据库的缓存中缓存的同一条数据。即在该可选实施方式中,在数据库中数据发生改变时,自动重建缓存,从而可以保证对应数据库的缓存中缓存的数据与数据库中存储的数据一致。
虽然在应用中,也可以将数据的过期时间设置为无限大,以避免由于数据过期后,有大量并发请求到数据库中请求数据而导致数据库访问压力过大的问题。但是,将数据的过期时间设置为无限大,则可能会导致对应数据库的缓存的存储的数据不是最新的数据的问题,例如,假设对应数据库的缓存中存储了一条数据,该数据的关键词为天津大爆炸,内容为天津大爆炸造成了多少人死亡,多少人受伤,而在过一段时间之后,死伤的人数有变化,数据库中的记录更新了,但由于对应数据库的缓存中该数据的过期时间没有到,因此,不会更新。当有数据获取请求到达时,向客户端返回的数据还是之前的数据,使得用户获取的数据不准确。而本实施例中,数据仍然有过期时间,在数据过期之前,从数据库中获取数据更新对应数据库的缓存中的数据,从而即可以及时更新对应数据库的缓存中存储的数据,又可以避免并发的多个请求同时访问数据库而导致数据库访问压力过大的问题,可以提高数据查找的效率和准确率。
实施例二
图2为根据本实施例的数据获取方法的流程示意图,如图2所示,本实施例提供的数据获取方法主要包括以下步骤:
步骤S201,接收数据获取请求;
步骤S202,从对应数据库的缓存中查找数据获取请求所请求的数据;
步骤S203,是否从对应数据库的缓存中查找到所请求的数据?如果是,则执行步骤S204,否则,执行步骤S209;
步骤S204,获取对应数据库的缓存中缓存的该数据的超时时间;
具体地,可以根据预先设置的分隔符,从对应数据库的缓存存储的数据的值中获取该数据的超时时间。
步骤S205,当前时间是否已超出该数据的超时时间且没有超过过期时间?如果是,则执行步骤S206,否则,执行步骤S208;
步骤S206,从数据库的缓存中获取到该数据的令牌,从数据库中查找所请求的数据,将查找到的数据返回给客户端;
在本实施例中,如果从缓存中没有获取到该数据的令牌,则执行步骤S208,将从缓存中查找到的数据返回给客户端。
步骤S207,使用查找到的数据更新对应数据库的缓存中缓存的该数据,并重置该数据的超时时间和过期时间;
步骤S208,将查找到的数据返回给客户端;
步骤S209,从数据库中查找所请求的数据;
步骤S210,将查找到的数据返回给客户端。
通过本实施例提供的技术方案,为数据增加一个超时时间,在超过超时时间且未超过过期时间的期间,如果有数据请求,则从数据库中获取数据并更新对应数据库的缓存中的数据,从而即可以及时更新对应数据库的缓存中缓存的数据,又可以避免并发的多个请求同时访问数据库而导致数据库访问压力过大的问题,可以提高数据查找的效率和准确率。
实施例三
本实施例提供了一种数据获取装置,该装置可以用于实现上述任一种实施方式所描述的数据获取方法。
图3为本实施例提供的数据获取装置的结构示意图,如图3所示,该数据获取装置主要包括:接收模块310,用于接收数据获取请求;第一查找模块320,用于从对应数据库的缓存中查找所述数据获取请求所请求的数据;第一获取模块330,用于在所述第一查找模块查找从所述对应数据库的缓存中查找到所述数据的情况下,获取所述数据的超时时间,其中,所述超时时间小于所述数据的过期时间;第一判断模块340,用于判断当前时间是否已超出所述超时时间;发送模块350,用于在所述第一判断模块确定所述当前时间没有超出所述超时时间的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。。
在本实施例中,为了避免数据过期后,同时有多个请求查找该数据,而导致数据库的访问压力过大,在对应数据库的缓存中存储的数据增加一个字段,该字段用于指示数据的超时时间(timeout),其中,数据的超时时间小于该数据的过期时间(expirationtime)。在本实施例中,当接收模块310接收到数据获取请求时,第一查找模块320从对应数据库的缓存查找到所请求的数据后,第一获取模块330获取该数据的超时时间,然后第一判断模块340判断当前时间是否已超过超时时间。在当前时间没有超过超时时间的情况下,将对应数据库的缓存中存储的数据返回给数据请求方。
在本发明实施例的一个可选实施方案中,如图4所示,该装置还可以包括:第二判断模块360,用于在所述第一判断模块330确定所述当前时间超出所述超时时间的情况下,判断当前时间是否超出所述过期时间;第二获取模块370,用于在所述第二判断模块360判断所述当前时间未超出所述过期时间的情况下,从所述对应数据库的缓存中获取所述数据对应的令牌;第二查找模块380,用于在所述第二获取模块370获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
在该可选实施方式中,在当前时间已超出超时时间且未超过过期时间的情况下,即使对应数据库的缓存中存储有所请求的数据,为了保证数据不会过期,先由第二获取模块370从缓存中获取该数据的令牌,在获取到令牌之后,第二查找模块380到对应数据库中查找该数据,从而可以保证获取到的数据为新的数据。
在本发明实施例的一个可选实施方案中,超时时间可以作为数据的内容的一部分,记录在数据中,通过预设分隔符与数据的内容主体分离。在对应数据库的缓存中缓存的数据一般包括两个部分,即键(KEY)和值(VALUE),其中,键部分记录的为数据的关键词,为检索的索引,而值部分记录的为数据的内容。在本实施例中,可以将超时时间记录在值部分,通过预设的分隔符将超时时间与数据实体内容部分分离。例如,分隔符可以为四个星号加上大括号,分隔符为终端符,前边该条数据的具体内容,例如某央视记者报道的新闻。
在本实施例中,数据的超时时间具体可以根据该数据的访问频率来设置,例如,假设该数据每分钟10个访问请求,则可以设置:过期时间-超时时间=1分钟,即在数据过期前1分钟之内,接收模块310接收到数据的获取请求后,第二获取模块370从缓存中获取该数据的令牌,获取到之后,触发第二查找模块380从数据库中查找该数据。如果该数据的访问频率比较低,例如,1分钟大概只有1个访问请求,则如果还按照上述方式设置,可能会出现在数据过程前1分钟之内没有数据的获取请求,从而无法对数据进行缓存重建,因此,可以将预定值设置小一些,例如,在过期时间前2分钟之内,接收模块310接收到数据的获取请求后,第二获取模块370从缓存中获取该数据的令牌,获取到之后,触发第二查找模块380从数据库中查找该数据。超时时间的具体取值本实施例不作限定。
在本发明实施例的一个可选实施方案中,如图4所示,该装置还可以包括:缓存模块390,用于在所述第二查找模块380从所述对应数据库中查找到所述数据的情况下,使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据;发送模块350还用于将所述对应数据库中查找到的所述数据返回给数据请求方。
在上述可选实施方式中,在当前时间已超出超时时间且未超过过期时间的情况下,即使对应数据库的缓存中存储有所请求的数据,为了保证数据不会过期,先由第二获取模块370从缓存中获取该数据的令牌,在获取到令牌之后,第二查找模块380到对应数据库中查找该数据,然后由缓存模块390使用从数据库中查找到的数据更新缓存的数据不会过期,进而解决了由于数据过期后,有大量并发请求到数据库中请求数据而导致数据库访问压力过大的问题。
可选地,为了确保数据不会再在之前的数据的过期时间到达时过期,在从数据库中查找到数据更新对应数据库的缓存中缓存的该数据之后,还可以重置该数据超时时间和过期时间。因此,在本发明实施例的一个可选实施方案中,该装置还可以包括:执行模块,用于在所述缓存模块390使用从所述数据库中查找到的数据更新所述对应数据库的缓存中存储的数据之后,重置缓存中存储的所述数据的超时时间和过期时间。
在本发明实施例的一个可选实施方案中,发送模块350还用于在所述第二获取模块370未获取到所述令牌的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。当然,也可以等待一段时间之后,再重新从缓存中查找所请求的数据,这时候,有其他进程已经从对应数据库中查找所请求的数据,并重建该数据的缓存,因此,第一查找模块320从缓存中查找到的数据为新的数据,发送模块350可以将第一查找模块320查找到的数据返回给客户端。
采用上述的方式,只有在数据超时后且未超过过期时间的情况下,有数据获取请求的情况才更新对应数据库的缓存中缓存的数据,这样可能导致在数据库更新后的一段时间内,数据获取请求还是只能获取到以前的数据的问题。因此,在本发明实施例的一个可选实施方案中,该还可以包括:检测模块,用于检测所述数据库存储的数据是否发生更新;第二缓存模块,用于使用更新后的内容,更新所述对应数据库的缓存中缓存的相同的数据的内容。
通过本实施例提供的上述数据获取装置,为数据增加一个超时时间,在超过超时时间到达预定时间前,如果有数据请求,则从数据库中获取数据更新对应数据库的缓存中的数据,从而即可以及时更新对应数据库的缓存中缓存的数据,又可以避免并发的多个请求同时访问数据库而导致数据库访问压力过大的问题,可以提高数据查找的效率和准确率。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
基于本发明的一个方面,还公开了:A1.一种数据获取方法,包括:
接收数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请求的数据;
若所述对应数据库的缓存中存储有所述数据,进一步获取所述数据的超时时间;
判断当前时间是否已超出所述超时时间,其中,所述超时时间小于所述数据的过期时间;
若所述当前时间未超出所述超时时间,则将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
A2.根据A1所述的方法,其中,若所述当前时间超出所述超时时间,所述方法还包括:
判断所述当前时间是否超出所述过期时间;
若所述当前时间未超出所述过期时间,从所述对应数据库的缓存中获取所述数据对应的令牌;
在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
A3.根据A2所述的方法,还包括:
当在所述对应数据库中查找到所请求的数据时,将所述数据返回给数据请求方,并使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据。
A4.根据A3所述的方法,还包括:
重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。
A5.根据A2或A3所述的方法,其中,若未获取到所述令牌,所述方法还包括:
将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
A6.根据A1-A5中任一项所述的方法,其中,所述超时时间和过期时间与所述数据关联且存储在所述对应数据库的缓存中。
基于本发明的另一各方面,还公开了:B7.一种数据获取装置,包括:
接收模块,用于接收数据获取请求;
第一查找模块,用于从对应数据库的缓存中查找所述数据获取请求所请求的数据;
第一获取模块,用于在所述第一查找模块查找从所述对应数据库的缓存中查找到所述数据的情况下,获取所述数据的超时时间,其中,所述超时时间小于所述数据的过期时间;
第一判断模块,用于判断当前时间是否已超出所述超时时间;
发送模块,用于在所述第一判断模块确定所述当前时间没有超出所述超时时间的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
B8.根据B7所述的装置,还包括:
第二判断模块,用于在所述第一判断模块确定所述当前时间超出所述超时时间的情况下,判断当前时间是否超出所述过期时间;
第二获取模块,用于在所述第二判断模块判断所述当前时间未超出所述过期时间的情况下,从所述对应数据库的缓存中获取所述数据对应的令牌;
第二查找模块,用于在所述第二获取模块获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
B9.根据B8所述的装置,其中,
所述装置还包括:缓存模块,用于在所述第二查找模块从所述对应数据库中查找到所述数据的情况下,使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据;
所述发送模块还用于将所述对应数据库中查找到的所述数据返回给数据请求方。
B10.根据B9所述的装置,还包括:
执行模块,用于重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。
B11.根据B8所述的装置,其中,所述发送模块还用于在所述第二获取模块未获取到所述令牌的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
B12.根据B7-B11中任一项所述的装置,其中,所述超时时间和过期时间与所述数据关联且存储在所述对应数据库的缓存中。

Claims (10)

1.一种数据获取方法,包括:
接收数据获取请求,从对应数据库的缓存中查找到所述数据获取请求所请求的数据;
若所述对应数据库的缓存中存储有所述数据,进一步获取所述数据的超时时间;
判断当前时间是否已超出所述超时时间,其中,所述超时时间小于所述数据的过期时间;
若所述当前时间未超出所述超时时间,则将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
2.根据权利要求1所述的方法,其中,若所述当前时间超出所述超时时间,所述方法还包括:
判断所述当前时间是否超出所述过期时间;
若所述当前时间未超出所述过期时间,从所述对应数据库的缓存中获取所述数据对应的令牌;
在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
3.根据权利要求2所述的方法,还包括:
当在所述对应数据库中查找到所请求的数据时,将所述数据返回给数据请求方,并使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据。
4.根据权利要求3所述的方法,还包括:
重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。
5.根据权利要求2或3所述的方法,其中,若未获取到所述令牌,所述方法还包括:
将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
6.根据权利要求1-5中任一项所述的方法,其中,所述超时时间和过期时间与所述数据关联且存储在所述对应数据库的缓存中。
7.一种数据获取装置,包括:
接收模块,用于接收数据获取请求;
第一查找模块,用于从对应数据库的缓存中查找所述数据获取请求所请求的数据;
第一获取模块,用于在所述第一查找模块查找从所述对应数据库的缓存中查找到所述数据的情况下,获取所述数据的超时时间,其中,所述超时时间小于所述数据的过期时间;
第一判断模块,用于判断当前时间是否已超出所述超时时间;
发送模块,用于在所述第一判断模块确定所述当前时间没有超出所述超时时间的情况下,将所述对应数据库的缓存中存储的所述数据返回给数据请求方。
8.根据权利要求7所述的装置,还包括:
第二判断模块,用于在所述第一判断模块确定所述当前时间超出所述超时时间的情况下,判断当前时间是否超出所述过期时间;
第二获取模块,用于在所述第二判断模块判断所述当前时间未超出所述过期时间的情况下,从所述对应数据库的缓存中获取所述数据对应的令牌;
第二查找模块,用于在所述第二获取模块获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
9.根据权利要求8所述的装置,其中,
所述装置还包括:缓存模块,用于在所述第二查找模块从所述对应数据库中查找到所述数据的情况下,使用从所述对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据;
所述发送模块还用于将所述对应数据库中查找到的所述数据返回给数据请求方。
10.根据权利要求9所述的装置,还包括:
执行模块,用于重置所述对应数据库的缓存中的所述数据的超时时间和过期时间。
CN201510920961.9A 2015-12-11 2015-12-11 数据获取方法与装置 Pending CN105608115A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510920961.9A CN105608115A (zh) 2015-12-11 2015-12-11 数据获取方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510920961.9A CN105608115A (zh) 2015-12-11 2015-12-11 数据获取方法与装置

Publications (1)

Publication Number Publication Date
CN105608115A true CN105608115A (zh) 2016-05-25

Family

ID=55988055

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510920961.9A Pending CN105608115A (zh) 2015-12-11 2015-12-11 数据获取方法与装置

Country Status (1)

Country Link
CN (1) CN105608115A (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326774A (zh) * 2016-08-30 2017-01-11 江苏名通信息科技有限公司 一种用户数据处理方法
CN106407452A (zh) * 2016-09-30 2017-02-15 郑州云海信息技术有限公司 一种访问服务端数据的方法及装置
CN106407347A (zh) * 2016-09-05 2017-02-15 北京奇虎科技有限公司 一种缓存数据的方法和装置
CN107943594A (zh) * 2016-10-13 2018-04-20 北京京东尚科信息技术有限公司 数据获取方法和装置
CN108090058A (zh) * 2016-11-21 2018-05-29 广东亿迅科技有限公司 一种高并发活动交互方法
CN108228669A (zh) * 2016-12-22 2018-06-29 腾讯科技(深圳)有限公司 一种缓存处理方法及装置
CN108429777A (zh) * 2017-02-15 2018-08-21 腾讯科技(北京)有限公司 一种基于缓存的数据更新方法及服务器
CN108829498A (zh) * 2018-03-30 2018-11-16 阿里巴巴集团控股有限公司 业务数据访问方法和装置
CN108874806A (zh) * 2017-05-09 2018-11-23 广东神马搜索科技有限公司 数据查询方法、装置及数据存储系统
CN109829712A (zh) * 2018-12-24 2019-05-31 口碑(上海)信息技术有限公司 支付方式切换方法、装置、计算机设备及可读存储介质
CN110022296A (zh) * 2019-03-01 2019-07-16 口口相传(北京)网络技术有限公司 实时数据处理方法、装置、存储介质及计算机设备
CN110069419A (zh) * 2018-09-04 2019-07-30 中国平安人寿保险股份有限公司 多级缓存系统及其访问控制方法、设备和存储介质
CN110515714A (zh) * 2019-08-15 2019-11-29 浙江万朋教育科技股份有限公司 一种基于集群系统的任务均衡调度方法
CN110955871A (zh) * 2018-09-26 2020-04-03 北京国双科技有限公司 一种数据获取方法及装置
CN110995811A (zh) * 2019-11-25 2020-04-10 北京奇艺世纪科技有限公司 一种数据更新方法及装置
CN112052264A (zh) * 2020-08-05 2020-12-08 北京五八信息技术有限公司 业务数据查询方法、装置、电子设备及可读存储介质
CN112612789A (zh) * 2020-12-15 2021-04-06 平安消费金融有限公司 数据存取方法、装置、电子设备及存储介质
CN113010552A (zh) * 2021-03-02 2021-06-22 腾讯科技(深圳)有限公司 数据处理方法、系统、计算机可读介质及电子设备
CN113115138A (zh) * 2021-03-24 2021-07-13 烽火通信科技股份有限公司 消息交互超时判断方法、装置、设备及存储介质
CN117687727A (zh) * 2023-07-11 2024-03-12 荣耀终端有限公司 增加缓存的方法及相关产品

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102111449A (zh) * 2011-02-23 2011-06-29 北京蓝汛通信技术有限责任公司 一种更新数据的方法、装置和系统
CN103401950A (zh) * 2013-08-21 2013-11-20 网宿科技股份有限公司 缓存异步刷新方法、缓存服务器处理请求方法和系统
CN103631727A (zh) * 2012-08-27 2014-03-12 阿里巴巴集团控股有限公司 用于缓存服务器的缓存管理方法及缓存管理系统
CN104391862A (zh) * 2014-10-23 2015-03-04 北京锐安科技有限公司 一种缓存数据更新方法及装置
CN104657401A (zh) * 2014-10-21 2015-05-27 北京齐尔布莱特科技有限公司 一种web缓存的更新方法
CN105138587A (zh) * 2015-07-31 2015-12-09 小米科技有限责任公司 数据访问方法、装置和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102111449A (zh) * 2011-02-23 2011-06-29 北京蓝汛通信技术有限责任公司 一种更新数据的方法、装置和系统
CN103631727A (zh) * 2012-08-27 2014-03-12 阿里巴巴集团控股有限公司 用于缓存服务器的缓存管理方法及缓存管理系统
CN103401950A (zh) * 2013-08-21 2013-11-20 网宿科技股份有限公司 缓存异步刷新方法、缓存服务器处理请求方法和系统
CN104657401A (zh) * 2014-10-21 2015-05-27 北京齐尔布莱特科技有限公司 一种web缓存的更新方法
CN104391862A (zh) * 2014-10-23 2015-03-04 北京锐安科技有限公司 一种缓存数据更新方法及装置
CN105138587A (zh) * 2015-07-31 2015-12-09 小米科技有限责任公司 数据访问方法、装置和系统

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326774A (zh) * 2016-08-30 2017-01-11 江苏名通信息科技有限公司 一种用户数据处理方法
CN106407347B (zh) * 2016-09-05 2019-08-06 北京奇虎科技有限公司 一种缓存数据的方法和装置
CN106407347A (zh) * 2016-09-05 2017-02-15 北京奇虎科技有限公司 一种缓存数据的方法和装置
CN106407452A (zh) * 2016-09-30 2017-02-15 郑州云海信息技术有限公司 一种访问服务端数据的方法及装置
CN107943594A (zh) * 2016-10-13 2018-04-20 北京京东尚科信息技术有限公司 数据获取方法和装置
CN107943594B (zh) * 2016-10-13 2021-11-12 北京京东尚科信息技术有限公司 数据获取方法和装置
CN108090058A (zh) * 2016-11-21 2018-05-29 广东亿迅科技有限公司 一种高并发活动交互方法
CN108090058B (zh) * 2016-11-21 2021-10-29 广东亿迅科技有限公司 一种高并发活动交互方法
CN108228669A (zh) * 2016-12-22 2018-06-29 腾讯科技(深圳)有限公司 一种缓存处理方法及装置
CN108228669B (zh) * 2016-12-22 2020-08-14 腾讯科技(深圳)有限公司 一种缓存处理方法及装置
CN108429777B (zh) * 2017-02-15 2022-05-13 腾讯科技(北京)有限公司 一种基于缓存的数据更新方法及服务器
CN108429777A (zh) * 2017-02-15 2018-08-21 腾讯科技(北京)有限公司 一种基于缓存的数据更新方法及服务器
CN108874806A (zh) * 2017-05-09 2018-11-23 广东神马搜索科技有限公司 数据查询方法、装置及数据存储系统
CN108829498A (zh) * 2018-03-30 2018-11-16 阿里巴巴集团控股有限公司 业务数据访问方法和装置
CN108829498B (zh) * 2018-03-30 2022-03-08 创新先进技术有限公司 业务数据访问方法和装置
CN110069419A (zh) * 2018-09-04 2019-07-30 中国平安人寿保险股份有限公司 多级缓存系统及其访问控制方法、设备和存储介质
CN110955871A (zh) * 2018-09-26 2020-04-03 北京国双科技有限公司 一种数据获取方法及装置
CN109829712B (zh) * 2018-12-24 2020-11-10 口碑(上海)信息技术有限公司 支付方式切换方法、装置、计算机设备及可读存储介质
CN109829712A (zh) * 2018-12-24 2019-05-31 口碑(上海)信息技术有限公司 支付方式切换方法、装置、计算机设备及可读存储介质
CN110022296A (zh) * 2019-03-01 2019-07-16 口口相传(北京)网络技术有限公司 实时数据处理方法、装置、存储介质及计算机设备
CN110022296B (zh) * 2019-03-01 2021-05-18 口口相传(北京)网络技术有限公司 实时数据处理方法、装置、存储介质及计算机设备
CN110515714A (zh) * 2019-08-15 2019-11-29 浙江万朋教育科技股份有限公司 一种基于集群系统的任务均衡调度方法
CN110995811A (zh) * 2019-11-25 2020-04-10 北京奇艺世纪科技有限公司 一种数据更新方法及装置
CN110995811B (zh) * 2019-11-25 2022-05-03 北京奇艺世纪科技有限公司 一种数据更新方法及装置
CN112052264A (zh) * 2020-08-05 2020-12-08 北京五八信息技术有限公司 业务数据查询方法、装置、电子设备及可读存储介质
CN112612789A (zh) * 2020-12-15 2021-04-06 平安消费金融有限公司 数据存取方法、装置、电子设备及存储介质
CN113010552A (zh) * 2021-03-02 2021-06-22 腾讯科技(深圳)有限公司 数据处理方法、系统、计算机可读介质及电子设备
CN113010552B (zh) * 2021-03-02 2024-01-30 腾讯科技(深圳)有限公司 数据处理方法、系统、计算机可读介质及电子设备
CN113115138A (zh) * 2021-03-24 2021-07-13 烽火通信科技股份有限公司 消息交互超时判断方法、装置、设备及存储介质
CN117687727A (zh) * 2023-07-11 2024-03-12 荣耀终端有限公司 增加缓存的方法及相关产品

Similar Documents

Publication Publication Date Title
CN105608115A (zh) 数据获取方法与装置
US8285821B2 (en) Method, apparatus, and system of forward caching for a managed client
JP7263314B2 (ja) 分散ストアによる高可用性データベース
US6836827B2 (en) Delay cache method and apparatus
US9959280B1 (en) Garbage collection of data tiered to cloud storage
EP3465473B1 (en) Versioning and non-disruptive servicing of in-memory units in a database
US9201794B2 (en) Dynamic hierarchical memory cache awareness within a storage system
CN110909025A (zh) 数据库的查询方法、查询装置及终端
CN107301215B (zh) 一种搜索结果缓存方法及装置、搜索方法及装置
CN105447171A (zh) 数据缓存方法与装置
CN109167840B (zh) 一种任务推送方法、节点自治服务器及边缘缓存服务器
CN111475519B (zh) 数据缓存方法及装置
US9703705B2 (en) Performing efficient cache invalidation
CN112035766A (zh) 网页访问方法、装置、存储介质及电子设备
CN113906407A (zh) 用于数据库变化流的缓存技术
CN105095495B (zh) 一种分布式文件系统缓存管理方法和系统
CN113032335A (zh) 文件访问方法、装置、设备及存储介质
US20190303449A1 (en) Updating cache data
CN113360094B (zh) 数据预测方法和装置、电子设备及存储介质
CN111913913B (zh) 访问请求的处理方法和装置
CN110457307A (zh) 元数据管理系统、用户集群创建方法、装置、设备和介质
US9317432B2 (en) Methods and systems for consistently replicating data
US11394748B2 (en) Authentication method for anonymous account and server
CN110554914A (zh) 资源锁管理方法、装置、服务器及存储介质
CN113778975B (zh) 基于分布式数据库的数据处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160525