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

文档序号:9839631阅读:来源:国知局
的缓存中查找到数据返回给客户端,本次数据获取结束。
[0035]在本发明实施例的一个可选实施方案中,如果当前时间超过超时时间,则可以进一步判断当前时间是否超过该数据的过期时间。若当前时间未超出过期时间,则从对应数据库的缓存中获取所述数据对应的令牌,然后在获取到所述令牌的情况下,访问所述对应数据库以查找所请求的数据。
[0036]在具体应用中,可以按照该数据的键(KEY)从数据库中查找该数据,得到该数据的值(VALUE)。
[0037]例如,假设超时时间为数据缓存后的30秒,过期时间为数据缓存后的40秒,假设当前时间为数据缓存后的35秒,则当前时间超过了超时时间但没有超过过期时间,说明当前缓存的数据快过期了,因此,为了避免向数据请求方返回的数据不是最新的数据,可以访问对应数据库,从对应数据库中获取所请求的数据。进一步地,为了避免同时有太多的进程同时访问数据库,在本实施例中,为缓存的数据增加了有限数量的令牌,当确定当前时间超过超时时间但没有超过过期时间时,在本实施例的上述可选实施方式中,先从对应数据库的缓存中获取所述数据对应的令牌,在获取到令牌后,再访问对应数据库以查找所请求的数据,从而可以避免大量进程同时访问数据库所带来的拥堵,减小数据库的压力。
[0038]在本发明实施例的另一个可选实施方案中,在上述可选实施方案中,在从对应数据库中查找到所请求的数据的情况下,可以将从对应数据库中查找到的所请求的数据返回给数据请求方,并且,还可以使用从对应数据库中查找到的数据更新所述对应数据库的缓存中的所述数据。通过该实施方式,通过使得从对应数据库中查找到的数据更新所述对应数据库的缓存中的数据,使得其它数据请求者可以从缓存中获取到新的数据,提高了用户体验。
[0039]在本发明实施例的又一个可选实施方案中,在上述可选实施方案中,在从对应数据库中查找到所请求的数据的情况下,还可以释放该数据的令牌,从而使得该数据的令牌可以被重新获取。
[0040]例如,在第一次缓存某条数据时,该数据的超时时间为当前时间之后的25秒,过期时间为当前时间之后的30秒,则在当前时间之后的25秒时,接收到该数据的获取请求,则在从对应数据库的缓存中获取到该数据之后,获知该数据的超时时间,判断应该重建该数据的缓存,则从数据库中获取该数据,然后重建缓存,使用从数据库中获取的数据更新对应数据库的缓存中缓存的该数据。缓存的该数据的超时时间为更新时的时间之后的25秒,过期时间为更新时的时间之后的30秒,从而延长了该数据的过期时间。
[0041]在本发明实施例的另一个可选实施方案中,在使用从对应数据库中查找到的数据更新所述对应数据库的缓存中的数据之后,为了使得缓存中的数据不会过期,可以重置对应数据库的缓存中的所述数据的超时时间和过期时间。采用该可选实施方式,使用从数据库中查找到数据重建缓存,从而可以保证数据不会过期,避免了因为缓存的数据过期,而导致所有进程都到对应数据库中查找数据所带来的拥堵。
[0042]在具体应用中,可以按照该数据的键(KEY)从数据库中查找该数据,得到该数据的值(VALUE),使用从数据库中查找到的值,替换对应数据库的缓存中缓存的该数据的值。
[0043]可选地,在上述可选实施方式中,如果没有获取到令牌,可以将对应数据库的缓存中存储的数据返回给数据请求方。或者,也可以等待一段时间后再从对应数据库的缓存中查找所请求的数据。具体本实施例不作限定。
[0044]在本发明实施例的一个可选实施方案中,超时时间可以作为数据的内容的一部分,记录在数据中,通过预设分隔符与数据的内容主体分离。在对应数据库的缓存中缓存的数据一般包括两个部分,即键(KEY)和值(VALUE),其中,键部分记录的为数据的关键词,为检索的索引,而值部分记录的为数据的内容。在本实施例中,可以将超时时间记录在值部分,通过预设的分隔符将超时时间与数据实体内容部分分离。例如,分隔符可以为四个星号加上大括号,分隔符为终端符,前边该条数据的具体内容,例如某央视记者报道的新闻。
[0045]在本实施例中,超时时间具体可以根据该数据的访问频率来设置,例如,假设该数据每分钟10个访问请求,则可以设置:过期时间-超时时间=1分钟,即在数据过期前I分钟之内,接收到数据的获取请求后,则执行后续的步骤S106,如果该数据的访问频率比较低,例如,I分钟大概只有I个访问请求,则如果还按照上述方式设置,可能会出现在数据过程前I分钟之内没有数据的获取请求,从而对数据进行缓存重建,因此,可以将预定值设置小一些,例如,可以将超时时间设置在过期时间短2分钟。超时时间的具体取值本实施例不作限定。
[0046]通过本实施例提供的技术方案,通过在缓存数据过期前,重建缓存,从而避免了数据过期,进而解决了由于数据过期后,有大量并发请求到数据库中请求数据而导致数据库访问压力过大的问题。
[0047]采用上述的方式,只有在数据超时后且在数据过期时间到达前的情况下,有数据获取请求的情况才更新对应数据库的缓存中缓存的数据,这样可能导致在数据库更新后的一段时间内,数据获取请求还是只能获取到以前的数据的问题。在本发明实施例的一个可选实施方案中,还可以监测数据库,在更新数据时,主动重建缓存。因此,在该可选实施方式中,该方法还可以包括:检测到数据库存储的数据发生更新;使用更新后的内容,更新对应数据库的缓存中缓存的同一条数据。即在该可选实施方式中,在数据库中数据发生改变时,自动重建缓存,从而可以保证对应数据库的缓存中缓存的数据与数据库中存储的数据一致。
[0048]虽然在应用中,也可以将数据的过期时间设置为无限大,以避免由于数据过期后,有大量并发请求到数据库中请求数据而导致数据库访问压力过大的问题。但是,将数据的过期时间设置为无限大,则可能会导致对应数据库的缓存的存储的数据不是最新的数据的问题,例如,假设对应数据库的缓存中存储了一条数据,该数据的关键词为天津大爆炸,内容为天津大爆炸造成了多少人死亡,多少人受伤,而在过一段时间之后,死伤的人数有变化,数据库中的记录更新了,但由于对应数据库的缓存中该数据的过期时间没有到,因此,不会更新。当有数据获取请求到达时,向客户端返回的数据还是之前的数据,使得用户获取的数据不准确。而本实施例中,数据仍然有过期时间,在数据过期之前,从数据库中获取数据更新对应数据库的缓存中的数据,从而即可以及时更新对应数据库的缓存中存储的数据,又可以避免并发的多个请求同时访问数据库而导致数据库访问压力过大的问题,可以提高数据查找的效率和准确率。
[0049]实施例二
[0050]图2为根据本实施例的数据获取方法的流程示意图,如图2所示,本实施例提供的数据获取方法主要包括以下步骤:
[0051 ]步骤S201,接收数据获取请求;
[0052]步骤S202,从对应数据库的缓存中查找数据获取请求所请求的数据;
[0053]步骤S203,是否从对应数据库的缓存中查找到所请求的数据?如果是,则执行步骤S204,否则,执行步骤S209;
[0054]步骤S204,获取对应数据库的缓存中缓存的该数据的超时时间;
[0055]具体地,可以根据预先设置的分隔符,从对应数据库的缓存存储的数据的值中获取该数据的超时时间。
[0056]步骤S205,当前时间是否已超出该数据的超时时间且没有超过过期时间?如果是,则执行步骤S206,否则,执行步骤S208 ;
[0057]步骤S206,从数据库的缓存中获取到该数据的令牌,从数据库中查找所请求的数据,将查找到的数据返回给客户端;
[0058]在本实施例中,如果从缓存中没有获取到该数据的令牌,则执行步骤S208,将从缓存中查找到的数据返回给客户端。
[0059]步骤S207,使用查找到的数据更新对应数据库的缓存中缓存的该数据,并重置该数据的超时时间和过期时间;
[0060]步骤S208,将查找到的数据返回给客户端;
[0061]步骤S209,从数据库中查找所请求的数据;
[0062]步骤S210,将查找到的数据返回给客户端。
[0063]通过本实施例提供的技术方案,为数据增加一个超时时间,在超过超时时间且未超过过期时间的期间,如果有数据请求,则从数据库中获取数据并更新
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1