CN102682037A - 一种数据获取方法、系统及装置 - Google Patents
一种数据获取方法、系统及装置 Download PDFInfo
- Publication number
- CN102682037A CN102682037A CN2011100668851A CN201110066885A CN102682037A CN 102682037 A CN102682037 A CN 102682037A CN 2011100668851 A CN2011100668851 A CN 2011100668851A CN 201110066885 A CN201110066885 A CN 201110066885A CN 102682037 A CN102682037 A CN 102682037A
- Authority
- CN
- China
- Prior art keywords
- key word
- data
- white list
- data content
- deletion
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种数据获取方法、系统及装置,该方法包括:接收客户端发送的数据获取请求;判断数据获取请求中携带的关键字是否在预先设置的白名单中;当关键字不在所述白名单中时,通知客户端未查找到关键字对应的数据内容;当关键字在所述白名单中时,根据关键字查询缓存,在缓存中查找不到关键字对应的数据内容时,查询后台数据库以获取所述关键字对应的数据内容;当查找到关键字对应的数据内容时,将查找到的数据内容提供给客户端;当未查找到关键字对应的数据内容时,通知客户端未查找到关键字对应的数据内容。通过设置的白名单对数据请求进行过滤,避免了缓存大量不命中的情况,提高了数据处理效率和系统可靠性。
Description
技术领域
本申请涉及数据处理技术领域,尤指一种用于互联网网站数据获取的数据获取方法、系统及装置。
背景技术
随着互联网用户的高速增长,互联网应用的访问量也出现了快速的增长。巨大的访问流量会对互联网的后端系统,比如数据库或者其他后端服务造成巨大的压力,对于一些访问量大的网站系统,数据读取频率比数据更新频率高很多。为了提高系统的吞吐量,目前大都采用基于关键字、键值(key/value)的本地缓存或者集中式缓存将一些数据缓存起来,以减轻后端系统的压力,提高网站系统的吞吐量。
现有技术中应用缓存实现数据请求的流程如图1所示。具体包括下列步骤:
1)用户向应用系统请求数据;
用户通过客户端向应用系统发送数据请求,该数据请求中携带某个关键字(key)。
2)应用系统查询缓存来获取数据;
应用系统接收到数据请求后,首先根据请求中包含的key查询缓存。若缓存中存在与该key对应存储的数据,则将与该key对应存储的数据返回,这种情况下即缓存命中数据;若缓存中不存在与该key对应存储的数据,则返回未查找到数据的提示信息,这种情况下即缓存未命中数据。
缓存可以包括远程集中式缓存或本地缓存。其中,当前广泛应用于大型互联网网站的远程集中式缓存是开源软件运行的缓存设备(memcached)。
3)应用系统接收缓存返回的信息;
当缓存返回未查找到数据的提示信息时执行步骤4),否则执行步骤6)。
4)应用系统向后台数据库查询并获取该key对应的数据。
当缓存返回未查找到数据的提示信息时,应用系统向后台数据库查询数据请求中的key对应的数据,后台数据库提供查找到的数据给应用系统。
5)应用系统接收后台数据库返回的数据,然后执行步骤6)。
6)应用系统将缓存或后台数据库返回的数据返回给用户所在的客户端。
上述过程中,缓存中的数据一般是和后台数据库中的数据保持一致的,当后台数据库中的数据更新时,通过主动通知缓存或者通过缓存数据一定时间内失效的方式,达到数据同步的目的。
上述实现方式使得应用系统对缓存命中率的要求很高,且在用户请求数据时,应用系统直接根据携带的key查询缓存,当出现攻击者伪装合法用户随机提供一些缓存中不存在的key时,那么这些请求在缓存中都不会被命中,而需要将请求进而转至后台数据库处理,从而出现在缓存中对请求大量未命中的现象,或者在正常的业务场景中,大量的key不是存储在本应用系统中,而是存储在其他应用系统中时,若较多的用户使用这些key访问本应用系统或者其他应用系统,也会导致在本系统的缓存中未命中的数量增加,进一步大量数据请求转发到后台数据库,也会导致后台数据库大量不命中的现象出现。
当在应用系统中,缓存中出现大量数据请求未命中或由于应用场景而导致的在缓存中大量数据请求未命中,引起在缓存中数据请求命中率下降时,则会导致巨大访问流量转发到达后台数据库,这增加了后台数据库的数据处理量,导致系统处理压力增大,使系统的数据处理性能和吞吐量下降,影响了数据处理效率和系统的稳定性;严重的,当后台数据库无法支撑相应的访问量时,还可能会导致系统崩溃。
发明内容
本申请实施例提供一种数据获取方法、系统及装置,用以解决在缓存中大量数据请求不命中时,导致系统性能下降、甚至导致系统崩溃的问题。
一种数据获取方法,包括:
接收客户端发送的数据获取请求;
判断所述数据获取请求中携带的关键字是否在预先设置的白名单中;
当所述关键字不在所述白名单中时,通知客户端未查找到所述关键字对应的数据内容;
当所述关键字在所述白名单中时,根据所述关键字查询缓存,在缓存中查找不到所述关键字对应的数据内容时,查询后台数据库以获取所述关键字对应的数据内容;当查找到所述关键字对应的数据内容时,将查找到的数据内容提供给客户端;当未查找到所述关键字对应的数据内容时,通知客户端未查找到所述关键字对应的数据内容。
一种数据获取系统,包括:客户端、应用服务器、缓存和后台数据库;
所述客户端,用于发送数据获取请求给所述应用服务器,以及接收所述应用服务器返回的数据内容或未查找到数据内容的通知;
所述应用服务器,用于接收客户端发送的数据获取请求,判断所述数据获取请求中携带的关键字是否在预先设置的白名单中;当所述关键字不在所述白名单中时,通知客户端未查找到所述关键字对应的数据内容;当所述关键字在所述白名单中时,根据所述关键字查询缓存,在缓存中查找不到所述关键字对应的数据内容时,查询后台数据库以获取所述关键字对应的数据内容;当查找到所述关键字对应的数据内容时,将查找到的数据内容提供给客户端;当未查找到所述关键字对应的数据内容时,通知客户端未查找到所述关键字对应的数据内容;
所述缓存,用于缓存数据内容;
所述后台数据库,用于存储数据内容。
一种数据获取装置,包括:接收模块、判断模块、执行模块和查询模块;
所述接收模块,用于接收客户端发送的数据获取请求;
所述判断模块,用于判断所述数据获取请求中携带的关键字是否在预先设置的白名单中;
所述执行模块,用于当所述判断模块判断出所述关键字不在所述白名单中时,通知客户端未查找到所述关键字对应的数据内容;当所述判断模块判断出所述关键字在所述白名单中时通知查询模块;
所述查询模块,用于根据所述关键字查询缓存,在缓存中查找不到所述关键字对应的数据内容时,查询后台数据库以获取所述关键字对应的数据内容;当查找到所述关键字对应的数据内容时,将查找到的数据内容提供给客户端;当未查找到所述关键字对应的数据内容时,通知客户端未查找到所述关键字对应的数据内容。
本申请实施例提供的数据获取方法、系统及装置,当接收客户端发送的数据获取请求时,先判断数据获取请求中携带的关键字是否在预先设置的白名单中,当不在白名单中时,直接通知客户端未查找到该关键字对应的数据内容;当在白名单中时,再查询缓存和后台数据库获取对应的数据内容;通过设置的白名单对数据请求先进行一次过滤,从而避免了在缓存中不存在大量数据请求中携带的关键字对应的数据内容时,执行查询操作所导致的在缓存中出现大量数据请求未命中的情况,可以将在缓存中的数据请求命中率维持在一个较高、较稳定的范围内,保证了数据处理的高效性和系统稳定性、可靠性;避免了在缓存中数据请求命中率下降所导致的后台数据库处理压力过大所导致的系统崩溃的问题。
附图说明
图1为现有技术中数据请求的流程图;
图2为本申请实施例中数据获取方法的实现流程图;
图3为本申请实施例中白名单过滤关键字的实现流程图;
图4为本申请实施例中增加数据内容时更新白名单的流程图;
图5为本申请实施例中删除数据内容时更新白名单的流程图;
图6为本申请实施例中重新构建白名单的流程图;
图7为本申请实施例中数据获取系统的结构示意图;
图8为本申请实施例中应用服务器的结构示意图。
具体实施方式
针对现有技术中存在的缓存大量不命中时导致系统数据处理性能下降的问题,本申请实施例提供一种数据获取方法,该方法在用户通过客户端获取数据内容时,先对用户提供的关键字进行过滤,当确定是系统中存在的关键字时才会到达缓存,进行数据查询,从而提高了缓存命中的概率。
本申请实施例提供的数据获取方法,其流程如图2所示,执行步骤如下:
步骤S11:客户端发送数据获取请求给应用服务器。
用户使用客户端向应用系统中的应用服务器发送包含选定的关键字的数据获取请求。
步骤S12:应用服务器判断数据获取请求中携带的关键字是否在预先设置的白名单中。
应用服务器接收客户端发送的数据获取请求,获取其中携带的关键字(key),判断数据获取请求中携带的关键字是否在预先设置的白名单中。白名单可存储在服务器的本地缓存中。
当获取的关键字不在白名单中时,执行步骤S13;否则执行步骤S14;
步骤S13:通知客户端未查找到获取的关键字对应的数据内容。
当获取的关键字不在白名单中时,应用服务器将不再处理该数据获取请求,直接返回查询失败的通知,通知客户端未查找到所述关键字对应的数据内容,结束数据获取流程。
步骤S14:在缓存中查找关键字对应的数据内容。
当获取的关键字在白名单中时,应用服务器才会处理接收到的数据获取请求,去缓存中查询是否存在数据获取请求中携带的关键字对应的数据内容。
其中,用于缓存数据内容的缓存可以采用服务器的本地缓存,也可以采用外置的集中式缓存。
步骤S15:根据查询结果确定缓存中是否存在获取的关键字对应的数据内容。
当查找到缓存中存在获取的关键字对应的数字内容,即缓存命中时,执行步骤S18;否则执行步骤S16。
步骤S16:从后台数据库中获取关键字对应的数据内容。
当缓存不命中时,到后台数据库中查找,即向后台数据库请求接收到的数据获取请求中携带的关键字对应的数据内容。
步骤S17:根据查询结果确定后台数据库中是否存在获取的关键字对应的数据内容。
当查找到后台数据中存在获取的关键字对应的数字内容时,执行步骤S18;否则执行步骤S19。
步骤S18:将查找到的数据内容提供给客户端。
当缓存命中,或者缓存不命中但是后台数据库中查找到对应的数据内容时,将查找到的数据内容提供给客户端,并结束数据请求流程。
步骤S19:通知客户端未查找到获取的关键字对应的数据内容。
当缓存不命中且后台数据库中也查找不到对应的数据内容时,认为不存在所请求获取的数据内容,通知客户端未查找到对应的数据内容,结束数据请求流程。
也就是说,上述步骤S14-步骤S19实现了:当关键字在白名单中时,根据顺次查询缓存和后台数据库获取关键字对应的数据内容得到的查找结果,将查找到的数据内容提供给客户端或通知客户端未查找到关键字对应的数据内容。
上述数据获取方法中,可以按照设定的时间周期,周期性的进行缓存与后台数据库中的数据内容的同步和更新。
优选的,当步骤S17确定缓存不命中但在后台数据库中查找到对应的数据内容时,即缓存和后台数据库中的数据内容不一致时,也执行根据后台数据库更新缓存中的数据内容的操作。
可选的,上述数据获取方法中,白名单可以通过将缓存中的数据内容对应的关键字保存在一个关键字队列中,通过关键字队列实现白名单管理。上述步骤S12应用服务器判断数据获取请求中携带的关键字是否在预先设置的白名单中时,直接查询关键字队列即可。
可选的,上述数据获取方法中,白名单通过存储已添加的关键字的关键字队列和存储需删除的关键字的删除队列构建,其中白名单中的关键字是指包含在关键字队列中且不包含在删除队列中的关键字。这样将需删除的关键字放在删除队列中,而不用直接对关键字队列执行删除操作,从而很好避免了对关键子队列执行删除操作所导致的操作复杂的问题,当需删除的关键字达到一定数量时,可以通过重新构建关键字队列和删除队列来实现重新构建白名单。例如:可以通过布隆过滤器实现关键字队列的构建,布隆过滤器是一个很长的二进制向量和一系列随机映射函数,可以用于检索一个元素是否在一个集合中。其空间效率和查询时间都远远超过一般的算法。由于布隆过滤器不支持删除操作,因此,为了使得通过布隆过滤器实现白名单构建时,能够支持白名单中的关键字删除操作,所构建的白名单包括存储已添加的关键字的布隆过滤器和包括需删除的关键字的删除队列,也就是说维护一个删除队列来保存白名单中需要删除的关键字。
此时,上述步骤S12应用服务器判断数据获取请求中携带的关键字是否在预先设置的白名单中,即通过白名单进行关键字过滤的具体实现流程如图3所示,执行步骤如下:
步骤S121:查询数据获取请求中携带的关键字是否在删除队列中。
当使用布隆过滤器构建关键字队列时,由于布隆过滤器不支持删除操作,因此布隆过滤器中存储的是所有添加的关键字,包括需要保留的和需删除的关键字,而删除队列中保存的是需删除的关键字,其中白名单中包括的是指需要保留的,即添加后不需要删除那些关键字,而删除队列中的关键字则是被白名单排除的关键字。
因此,接收到数据获取请求时,先在删除队列中检查关键字是否存在,以确定该关键字是否不在白名单中。
若是,执行步骤S124,否则,执行步骤S122。
步骤S122:判断该关键字是否是关键字队列中存储的关键字。
当获取的关键字不在删除队列中时,进一步判断其是否是关键字队列中存储的关键字,使用布隆过滤器构建关键字队列时,则判断是否是布隆过滤器中存储的关键字。
若是,执行步骤S123,否则,执行步骤S124。
步骤S123:确定该关键字在白名单中。
不在删除队列中的关键字,若在关键字队列,如布隆过滤器中,说明该关键字属于添加到关键字队列中后未被删除的、即需保留的关键字,这样的关键字属于在白名单中的关键字。
步骤S124:确定该关键字不在白名单中。
当关键字在删除队列中时,说明该关键在被删除了,因此该关键字不在白名单中。
当关键字不在删除队列中,也不在关键字队列中时,说明该关键字也不在白名单中。
上述数据获取方法中,白名单根据后台数据库中的存储的数据内容对应的关键字构建,当增加数据内容到后台数据库中或删除后台数据库中的数据内容时,更新白名单。在数据增加或删除时,即时更新白名单,可以很好的保持白名单更新的实时性。
当增加数据内容到后台数据库中时,更新白名单的过程如图4所示,执行步骤如下:
步骤S21:发送数据增加请求。
用户可以通过客户端向应用服务器发送数据增加请求。
步骤S22:接收到数据增加请求时,判断请求增加的数据内容对应的关键字是否在删除队列中。
由于删除队列中包含的是白名单不包括的、需要删除的关键字,因此,应用服务器接收到数据增加请求时,判断数据增加请求中请求增加的数据内容对应的关键字是否在删除队列中。
步骤S23:将上述对应的关键字从删除队列中删除。
若上述数据增加请求中请求增加的数据内容对应的关键字在删除队列中,则将该关键字从删除队列中删除,以免该关键字被排除在白名单外。
步骤S24:将请求增加的数据内容对应的关键字添加到关键字队列中。
将上述数据增加请求中请求增加的数据内容对应的关键字增加到关键字队列,比如使用的布隆过滤器中,使其被包含在白名单内。
步骤S25:将请求增加的数据内容增加到后台数据库中。
上述方法将请求增加的数据内容增加到后台数据库中后,还可以包括:
步骤S26:通知用户数据增加完成。
可以向客户端返回数据增加响应消息,通知用户数据增加完成。
当删除后台数据库中的数据内容时,更新白名单的过程如图5所示,执行步骤如下:
步骤S31:发送数据删除请求。
用户可以通过客户端向应用服务器发送数据删除请求。
步骤S32:接收数据删除请求后,根据请求删除的数据内容,确定需要删除的关键字,将需要删除的关键字添加到删除队列中。
当接收到数据删除请求时,根据请求删除的数据内容对应的关键字,确定出仅属于请求删除的数据内容的关键字,即请求删除的数据内容专属的关键字,这样的关键字则属于需要删除的关键字,将需要删除的关键字添加到删除队列中,实现将该关键字被排除在白名单外。
例如:当请求删除的数据内容中包含关键字“手机”和“型号XX”,“手机”这个关键字由于也是其他数据内容的关键字,因此不能删除,而“型号XX”是仅属于请求删除的数据内容的关键字,因此属于需要删除的关键字。
步骤S33:将请求删除的数据内容从后台数据库中删除。
上述方法将请求删除的数据内容从后台数据库中删除后,还可以包括:
步骤S34:通知用户数据删除完成。
可以向客户端返回数据删除响应消息,通知用户数据删除完成。
由于基于布隆过滤器的白名单可以支持很大数据量,一般一百万条记录存储在布隆过滤器中所占用的存储空间大小也差不多只有1M左右,但删除队列占用的空间相对比较大。当白名单中需要添加到删除队列中的关键字数量增大时,删除队列则会越来越大。在删除队列的中的关键字增多一定数量时,有可能导致白名单占用的内存空间过大,影响处理效率。因此,优选的,可以在删除队列的中的关键字数量是否超过设定的数量阈值,根据后台数据库中的数据内容重新构建白名单。
重新构建白名单时,删除删除队列中的所有关键字,并重新构建关键字队列,比如使用的布隆过滤器,重新添加关键字到布隆过滤器中。重新构建的布隆过滤器中的关键字为后台数据库中存储的数据内容对应的关键字。
优选的,可以将需要删除的关键字添加到删除队列中时,判断是否需要重新构建白名单。当然也可以不在删除关键字执行该判断是否需要重新构建白名单,而是按照设定的时间周期执行判断是否需要重新构建白名单。该重新构建白名单的过程如图6所示,执行步骤如下:
步骤S41:启动。
步骤S42:判断删除队列的中的关键字数量是否超过设定的数量阈值。
例如设定的删除队列的数量阈值为一万,则当应用服务器判断出删除队列中关键字数量超过一万时,认为删除队列过大,需要重新构建白名单。
若是,执行步骤S43,否则,执行步骤S44。
步骤S43:根据后台数据库中存储的数据内容对应的关键字重新构建白名单。
当删除队列关键字数量超过设定的数量阈值时,根据后台数据库中的存储的数据内容对应的关键字重新构建白名单,具体可以包括后台数据将所存储的数据内容对应的关键字提供给应用服务器,应用服务器将其添加到白名单中的关键字队列,比如使用的布隆过滤器中。
重新构建后白名单的删除队列中关键字数量为0,布隆过滤器中包括后台数据库存储的所有数据内容对应的所有关键字。
步骤S44:结束。
根据本申请实施例提供的上述数据获取方法,可以构建一种数据获取系统,该系统结构如图7所示,包括:客户端10、应用服务器20、缓存30和后台数据库40。
客户端10,用于发送数据获取请求给应用服务器20,以及接收应用服务器20返回的数据内容或未查找到数据内容的通知。
应用服务器20,用于接收客户端发送的数据获取请求,判断数据获取请求中携带的关键字是否在预先设置的白名单中;当携带的关键字不在白名单中时,通知客户端未查找到携带的关键字对应的数据内容;当携带的关键字在白名单中时,根据所述关键字查询缓存,在缓存中查找不到所述关键字对应的数据内容时,查询后台数据库以获取所述关键字对应的数据内容;当查找到所述关键字对应的数据内容时,将查找到的数据内容提供给客户端;当未查找到所述关键字对应的数据内容时,通知客户端未查找到所述关键字对应的数据内容。
缓存30,用于缓存数据内容。缓存30可以是应用服务器的本地缓存或单独设置的集中式缓存。
后台数据库40,用于存储数据内容。
优选的,上述应用服务器20,还用于:根据后台数据库40中的存储的数据内容对应的关键字构建白名单;以及当增加数据内容到后台数据库40中或删除后台数据库40中的数据内容时,更新白名单;其中,白名单包括存储已添加的关键字的关键字队列和包括需删除的关键字的删除队列。即服务器20通过构建存储已添加的关键字的关键字队列和存储需删除的关键字的删除队列构建白名单,其中白名单中的关键字是指包含在关键字队列中且不包含在删除队列中的关键字。
优选的,上述应用服务器20,具体用于:查询数据获取请求中携带的关键字是否在删除队列中,若是,确定该关键字不在白名单中,若否,判断该关键字是否是关键字队列中存储的关键字。当在关键字队列中时,则确定该关键字在白名单中,否则确定该关键字不在白名单中。
优选的,上述应用服务器20,具体用于:当接收到数据增加请求时,判断请求增加的数据内容对应的关键字是否在删除队列中;若对应的关键字在删除队列中,则将该关键字从删除队列中删除;将请求增加的数据内容对应的关键字添加到关键字队列中,并将请求增加的数据内容增加到后台数据库中。以及当接收到数据删除请求时,根据请求删除的数据内容,确定需要删除的关键字,将需要删除的关键字添加到删除队列中,并将请求删除的数据内容从后台数据库中删除。
优选的,上述应用服务器20,还用于:将需要删除的关键字添加到删除队列中之后,或在设定的时间周期到期时,判断删除队列的中的关键字数量是否超过设定的数量阈值,当超过时,根据后台数据库40中存储的数据内容对应的关键字重新构建白名单。
根据本发明实施例提供提供的上述数据获取方法,可以构建一种数据获取装置,该装置可以设置在上述应用服务器20中。该装置的结构如图8所示,包括:接收模块201、判断模块202、执行模块203和查询模块204。
接收模块201,用于接收客户端发送的数据获取请求。
判断模块202,用于判断数据获取请求中携带的关键字是否在预先设置的白名单中。
优选的,上述判断模块202,具体用于:查询数据获取请求中携带的关键字是否在删除队列中,若是,确定该关键字不在白名单中,若否,判断该关键字是否是关键字队列中存储的关键字。若在关键字队列中,则确定该关键字在白名单中,否则确定该关键字不在白名单中。
执行模块203,用于当判断模块202判断出数据获取请求中携带的关键字不在白名单中时,通知客户端未查找到该关键字对应的数据内容;当判断模块202判断出数据获取请求中携带的关键字在白名单中时通知查询模块204。
查询模块204,用于根据所述关键字查询缓存30,在缓存30中查找不到关键字对应的数据内容时,查询后台数据库40以获取所述关键字对应的数据内容;当查找到关键字对应的数据内容时,将查找到的数据内容提供给客户端;当未查找到关键字对应的数据内容时,通知客户端未查找到所述关键字对应的数据内容。
优选的,上述查询模块204,具体用于:在缓存30中查找数据获取请求中携带的关键字对应的数据内容,当查找到时,将查找到的数据内容提供给客户端,当查找不到时,查找后台数据库40中是否存在该关键字对应的数据内容;若是,将查找到的数据内容提供给客户端;若否,通知客户端未查找到该关键字对应的数据。
优选的,上述应用服务器20,还包括:构建模块205,用于根据后台数据库40中的存储的数据内容对应的关键字构建白名单。通过构建存储已添加的关键字的关键字队列和存储需删除的关键字的删除队列构建白名单,其中白名单中的关键字是指包含在关键字队列中且不包含在删除队列中的关键字
优选的,上述构建模块205,还用于:当增加数据内容到后台数据库40中或删除后台数据库40中的数据内容时,更新白名单。
优选的,上述构建模块205,具体用于:当接收模块201接收到数据增加请求时,判断请求增加的数据内容对应的关键字是否在删除队列中;若对应的关键字在删除队列中,则将该关键字从删除队列中删除;将请求增加的数据内容对应的关键字添加到关键字队列中,并将请求增加的数据内容增加到后台数据库中。
优选的,上述构建模块205,还用于:当接收模块201接收到数据删除请求时,根据请求删除的数据内容,确定需要删除的关键字,将需要删除的关键字添加到删除队列中,并将请求删除的数据内容从后台数据库中删除。
优选的,上述构建模块205,还用于:将需要删除的关键字添加到删除队列中之后,或在设定的时间周期到期时,判断删除队列的中的关键字数量是否超过设定的数量阈值,当超过时,根据后台数据库40中的存储的数据内容对应的关键字重新构建白名单。
本申请实施例提供的数据获取方法、系统及装置,在客户端需要获取数据时,通过设置的白名单对数据请求先进行一次过滤,过滤掉缓存中不存在的数据内容对应的关键字,将系统不需要处理的数据获取请求尽早拒绝掉,有效地防止了缓存大量不命中的情况发生,将缓存的命中率维持在一个较高、较稳定的范围内,保证数据处理的高效性和系统稳定性、可靠性;避免了缓存命中率下降所导致的后台数据库处理压力过大所导致的系统崩溃的可能性。
上述方法通过关键字队列或应用布隆过滤器加删除队列构建白名单,实现灵活、方便。且在布隆过滤器的基础上让白名单支持删除操作,能很好支持大数据量的网站系统的应用需求具有较强的通用性和普遍适用性。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种数据获取方法,其特征在于,包括:
接收客户端发送的数据获取请求;
判断所述数据获取请求中携带的关键字是否在预先设置的白名单中;
当所述关键字不在所述白名单中时,通知客户端未查找到所述关键字对应的数据内容;
当所述关键字在所述白名单中时,根据所述关键字查询缓存,在缓存中查找不到所述关键字对应的数据内容时,查询后台数据库以获取所述关键字对应的数据内容;当查找到所述关键字对应的数据内容时,将查找到的数据内容提供给客户端;当未查找到所述关键字对应的数据内容时,通知客户端未查找到所述关键字对应的数据内容。
2.如权利要求1所述的方法,其特征在于,所述白名单中的关键字是指包含在关键字队列中的关键字但不包含在删除队列中的关键字;
判断所述数据获取请求中携带的关键字是否在预先设置的白名单中,具体包括:
查询所述数据获取请求中携带的关键字是否在删除队列中,若是,确定所述关键字不在白名单中;若否,判断该关键字是否是在所述关键字队列中存储的关键字;
若是,则确定所述关键字在白名单中,否则确定所述关键字不在白名单中。
3.如权利要求2所述的方法,其特征在于,所述关键字队列通过布隆过滤器实现。
4.如权利要求2所述的方法,其特征在于,所述白名单根据后台数据库中存储的数据内容对应的关键字构建;以及
当增加数据内容到后台数据库中或删除后台数据库中的数据内容时,更新白名单。
5.如权利要求4所述的方法,其特征在于,所述当增加数据内容到后台数据库中时,更新白名单,具体包括:
当接收到数据增加请求时,判断请求增加的数据内容对应的关键字是否在删除队列中;
若对应的关键字在删除队列中,则将该关键字从删除队列中删除;并
将请求增加的数据内容对应的关键字添加到关键字队列中,并将请求增加的数据内容增加到后台数据库中。
6.如权利要求4所述的方法,其特征在于,所述当删除后台数据库中的数据内容时,更新白名单,具体包括:
当接收到数据删除请求时,根据请求删除的数据内容,确定需要删除的关键字,将需要删除的关键字添加到删除队列中。
7.如权利要求6所述的方法,其特征在于,还包括:
在所述将需要删除的关键字添加到删除队列中之后,或在设定的时间周期到期时,判断删除队列的中的关键字数量是否超过设定的数量阈值,当超过时,根据所述后台数据库中存储的数据内容对应的关键字重新构建白名单。
8.一种数据获取系统,其特征在于,包括:客户端、应用服务器、缓存和后台数据库;
所述客户端,用于发送数据获取请求给所述应用服务器,以及接收所述应用服务器返回的数据内容或未查找到数据内容的通知;
所述应用服务器,用于接收客户端发送的数据获取请求,判断所述数据获取请求中携带的关键字是否在预先设置的白名单中;当所述关键字不在所述白名单中时,通知客户端未查找到所述关键字对应的数据内容;当所述关键字在所述白名单中时,根据所述关键字查询缓存,在缓存中查找不到所述关键字对应的数据内容时,查询后台数据库以获取所述关键字对应的数据内容;当查找到所述关键字对应的数据内容时,将查找到的数据内容提供给客户端;当未查找到所述关键字对应的数据内容时,通知客户端未查找到所述关键字对应的数据内容;
所述缓存,用于缓存数据内容;
所述后台数据库,用于存储数据内容。
9.如权利要求8所述的系统,其特征在于,所述服务器通过构建存储已添加的关键字的关键字队列和存储需删除的关键字的删除队列构建白名单,其中所述白名单中的关键字是指包含在关键字队列中且不包含在删除队列中的关键字;
所述服务器,具体用于查询所述关键字是否在删除队列中,若是,确定所述关键字不在白名单中,若否,判断该关键字是否是关键字队列中存储的关键字;若是,则确定所述关键字在白名单中,否则确定所述关键字不在白名单中。
10.一种数据获取装置,其特征在于,包括:接收模块、判断模块、执行模块和查询模块;
所述接收模块,用于接收客户端发送的数据获取请求;
所述判断模块,用于判断所述数据获取请求中携带的关键字是否在预先设置的白名单中;
所述执行模块,用于当所述判断模块判断出所述关键字不在所述白名单中时,通知客户端未查找到所述关键字对应的数据内容;当所述判断模块判断出所述关键字在所述白名单中时通知查询模块;
所述查询模块,用于根据所述关键字查询缓存,在缓存中查找不到所述关键字对应的数据内容时,查询后台数据库以获取所述关键字对应的数据内容;当查找到所述关键字对应的数据内容时,将查找到的数据内容提供给客户端;当未查找到所述关键字对应的数据内容时,通知客户端未查找到所述关键字对应的数据内容。
11.如权利要求10所述的装置,其特征在于,还包括:
构建模块,用于根据所述后台数据库中的存储的数据内容对应的关键字,通过构建存储已添加的关键字的关键字队列和存储需删除的关键字的删除队列构建白名单,其中所述白名单中的关键字是指包含在关键字队列中且不包含在删除队列中的关键字。
12.如权利要求11所述的装置,其特征在于,所述判断模块,具体用于:
查询所述关键字是否在删除队列中,若是,确定所述关键字不在白名单中,若否,判断该关键字是否是关键字队列中存储的关键字;
若是,则确定所述关键字在白名单中,否则确定所述关键字不在白名单中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110066885.1A CN102682037B (zh) | 2011-03-18 | 2011-03-18 | 一种数据获取方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110066885.1A CN102682037B (zh) | 2011-03-18 | 2011-03-18 | 一种数据获取方法、系统及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102682037A true CN102682037A (zh) | 2012-09-19 |
CN102682037B CN102682037B (zh) | 2016-09-28 |
Family
ID=46813983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110066885.1A Active CN102682037B (zh) | 2011-03-18 | 2011-03-18 | 一种数据获取方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102682037B (zh) |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914651A (zh) * | 2012-12-31 | 2014-07-09 | 腾讯科技(武汉)有限公司 | 恶意网页地址检测方法及装置 |
CN104794227A (zh) * | 2015-05-04 | 2015-07-22 | 郑州悉知信息技术有限公司 | 一种信息匹配方法及装置 |
WO2015196413A1 (en) * | 2014-06-26 | 2015-12-30 | Intel Corporation | Memcached systems having local caches |
CN105447063A (zh) * | 2014-09-30 | 2016-03-30 | 远光软件股份有限公司 | 一种数据库科目的检索方法及其检索装置 |
CN105447171A (zh) * | 2015-12-07 | 2016-03-30 | 北京奇虎科技有限公司 | 数据缓存方法与装置 |
CN105468707A (zh) * | 2015-11-19 | 2016-04-06 | 北京锐安科技有限公司 | 一种基于缓存的数据处理方法及装置 |
CN105468624A (zh) * | 2014-09-04 | 2016-04-06 | 上海福网信息科技有限公司 | 网站交互缓存方法及系统 |
CN105554122A (zh) * | 2015-12-18 | 2016-05-04 | 畅捷通信息技术股份有限公司 | 信息更新方法、信息更新装置、终端和服务器 |
CN105630889A (zh) * | 2015-12-18 | 2016-06-01 | 北京奇虎科技有限公司 | 通用缓存的方法及装置 |
CN105721538A (zh) * | 2015-12-30 | 2016-06-29 | 东莞市青麦田数码科技有限公司 | 数据访问的方法和装置 |
CN105786904A (zh) * | 2014-12-24 | 2016-07-20 | 远光软件股份有限公司 | 凭证相关取数缓存管理的方法及装置 |
CN105787124A (zh) * | 2016-03-28 | 2016-07-20 | 中国建设银行股份有限公司 | 应用于数据库的数据处理方法、装置及数据存储系统 |
CN106021345A (zh) * | 2016-05-09 | 2016-10-12 | 太仓市爱都网络科技有限公司 | 固定信息查询系统 |
CN106407452A (zh) * | 2016-09-30 | 2017-02-15 | 郑州云海信息技术有限公司 | 一种访问服务端数据的方法及装置 |
CN106776812A (zh) * | 2016-11-24 | 2017-05-31 | 北京小米移动软件有限公司 | 更新关键字的方法及装置 |
CN106921648A (zh) * | 2016-11-15 | 2017-07-04 | 阿里巴巴集团控股有限公司 | 数据存储方法、应用服务器及远程存储服务器 |
CN106973074A (zh) * | 2016-01-13 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及系统 |
CN107133297A (zh) * | 2017-04-26 | 2017-09-05 | 努比亚技术有限公司 | 数据交互方法、系统及计算机可读存储介质 |
CN107888659A (zh) * | 2017-10-12 | 2018-04-06 | 北京京东尚科信息技术有限公司 | 用户请求的处理方法及系统 |
CN108108310A (zh) * | 2016-11-24 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及服务器 |
CN109783163A (zh) * | 2019-01-23 | 2019-05-21 | 集奥聚合(北京)人工智能科技有限公司 | 一种基于多维数据变量的数据交互方法及平台 |
CN110162529A (zh) * | 2019-05-27 | 2019-08-23 | 广州华多网络科技有限公司 | 一种数据处理方法、业务服务器及数据处理系统 |
CN110162543A (zh) * | 2019-05-29 | 2019-08-23 | 北京奇艺世纪科技有限公司 | 一种信息查询方法及装置 |
CN110188119A (zh) * | 2019-06-10 | 2019-08-30 | 北京百度网讯科技有限公司 | 用于获取数据的方法和装置 |
CN110362590A (zh) * | 2018-04-02 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 数据管理方法、装置、系统、电子设备及计算机可读介质 |
CN111125751A (zh) * | 2019-12-03 | 2020-05-08 | 中盈优创资讯科技有限公司 | 数据库的防穿库方法及装置 |
CN112445821A (zh) * | 2019-08-29 | 2021-03-05 | 成都鼎桥通信技术有限公司 | 一种光伏电站的天气信息查询方法 |
CN112463813A (zh) * | 2020-11-19 | 2021-03-09 | 贝壳技术有限公司 | 数据缓存方法、装置、电子设备和存储介质 |
CN112818019A (zh) * | 2021-01-29 | 2021-05-18 | 北京思特奇信息技术股份有限公司 | 一种应用于Redis客户端的查询请求过滤方法及Redis客户端 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109885620A (zh) * | 2018-12-25 | 2019-06-14 | 航天信息股份有限公司 | 基于Hive数据仓库的元数据读取方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588879A (zh) * | 2004-08-12 | 2005-03-02 | 复旦大学 | 一种互联网内容过滤系统及过滤方法 |
US20050076084A1 (en) * | 2003-10-03 | 2005-04-07 | Corvigo | Dynamic message filtering |
CN1761203A (zh) * | 2005-11-03 | 2006-04-19 | 上海交通大学 | 网上信息安全综合分析与监控系统 |
CN101079042A (zh) * | 2006-12-28 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种快速查询黑白名单的系统及方法 |
CN101087259A (zh) * | 2006-06-07 | 2007-12-12 | 深圳市都护网络科技有限公司 | 一种过滤国际互联网络中垃圾电子邮件的系统及其实现方法 |
US20090063452A1 (en) * | 2007-08-29 | 2009-03-05 | Google Inc. | Search filtering |
-
2011
- 2011-03-18 CN CN201110066885.1A patent/CN102682037B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050076084A1 (en) * | 2003-10-03 | 2005-04-07 | Corvigo | Dynamic message filtering |
CN1588879A (zh) * | 2004-08-12 | 2005-03-02 | 复旦大学 | 一种互联网内容过滤系统及过滤方法 |
CN1761203A (zh) * | 2005-11-03 | 2006-04-19 | 上海交通大学 | 网上信息安全综合分析与监控系统 |
CN101087259A (zh) * | 2006-06-07 | 2007-12-12 | 深圳市都护网络科技有限公司 | 一种过滤国际互联网络中垃圾电子邮件的系统及其实现方法 |
CN101079042A (zh) * | 2006-12-28 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种快速查询黑白名单的系统及方法 |
US20090063452A1 (en) * | 2007-08-29 | 2009-03-05 | Google Inc. | Search filtering |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914651A (zh) * | 2012-12-31 | 2014-07-09 | 腾讯科技(武汉)有限公司 | 恶意网页地址检测方法及装置 |
CN106537375A (zh) * | 2014-06-26 | 2017-03-22 | 英特尔公司 | 具有本地高速缓存的内存缓存系统 |
US10277707B2 (en) | 2014-06-26 | 2019-04-30 | Intel Corporation | Memcached systems having local caches |
WO2015196413A1 (en) * | 2014-06-26 | 2015-12-30 | Intel Corporation | Memcached systems having local caches |
CN106537375B (zh) * | 2014-06-26 | 2020-02-14 | 英特尔公司 | 具有本地高速缓存的内存缓存系统 |
CN105468624A (zh) * | 2014-09-04 | 2016-04-06 | 上海福网信息科技有限公司 | 网站交互缓存方法及系统 |
CN105447063A (zh) * | 2014-09-30 | 2016-03-30 | 远光软件股份有限公司 | 一种数据库科目的检索方法及其检索装置 |
CN105786904A (zh) * | 2014-12-24 | 2016-07-20 | 远光软件股份有限公司 | 凭证相关取数缓存管理的方法及装置 |
CN104794227A (zh) * | 2015-05-04 | 2015-07-22 | 郑州悉知信息技术有限公司 | 一种信息匹配方法及装置 |
CN105468707A (zh) * | 2015-11-19 | 2016-04-06 | 北京锐安科技有限公司 | 一种基于缓存的数据处理方法及装置 |
CN105447171A (zh) * | 2015-12-07 | 2016-03-30 | 北京奇虎科技有限公司 | 数据缓存方法与装置 |
CN105630889A (zh) * | 2015-12-18 | 2016-06-01 | 北京奇虎科技有限公司 | 通用缓存的方法及装置 |
CN105630889B (zh) * | 2015-12-18 | 2019-12-10 | 北京奇虎科技有限公司 | 通用缓存的方法及装置 |
CN105554122A (zh) * | 2015-12-18 | 2016-05-04 | 畅捷通信息技术股份有限公司 | 信息更新方法、信息更新装置、终端和服务器 |
CN105721538A (zh) * | 2015-12-30 | 2016-06-29 | 东莞市青麦田数码科技有限公司 | 数据访问的方法和装置 |
CN106973074B (zh) * | 2016-01-13 | 2019-11-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及系统 |
CN106973074A (zh) * | 2016-01-13 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及系统 |
CN105787124A (zh) * | 2016-03-28 | 2016-07-20 | 中国建设银行股份有限公司 | 应用于数据库的数据处理方法、装置及数据存储系统 |
CN106021345A (zh) * | 2016-05-09 | 2016-10-12 | 太仓市爱都网络科技有限公司 | 固定信息查询系统 |
CN106407452A (zh) * | 2016-09-30 | 2017-02-15 | 郑州云海信息技术有限公司 | 一种访问服务端数据的方法及装置 |
CN106921648A (zh) * | 2016-11-15 | 2017-07-04 | 阿里巴巴集团控股有限公司 | 数据存储方法、应用服务器及远程存储服务器 |
CN108108310A (zh) * | 2016-11-24 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及服务器 |
CN106776812A (zh) * | 2016-11-24 | 2017-05-31 | 北京小米移动软件有限公司 | 更新关键字的方法及装置 |
CN106776812B (zh) * | 2016-11-24 | 2019-10-15 | 北京小米移动软件有限公司 | 更新关键字的方法及装置 |
CN107133297A (zh) * | 2017-04-26 | 2017-09-05 | 努比亚技术有限公司 | 数据交互方法、系统及计算机可读存储介质 |
CN107888659A (zh) * | 2017-10-12 | 2018-04-06 | 北京京东尚科信息技术有限公司 | 用户请求的处理方法及系统 |
CN110362590A (zh) * | 2018-04-02 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 数据管理方法、装置、系统、电子设备及计算机可读介质 |
CN109783163A (zh) * | 2019-01-23 | 2019-05-21 | 集奥聚合(北京)人工智能科技有限公司 | 一种基于多维数据变量的数据交互方法及平台 |
CN110162529A (zh) * | 2019-05-27 | 2019-08-23 | 广州华多网络科技有限公司 | 一种数据处理方法、业务服务器及数据处理系统 |
CN110162543A (zh) * | 2019-05-29 | 2019-08-23 | 北京奇艺世纪科技有限公司 | 一种信息查询方法及装置 |
CN110188119A (zh) * | 2019-06-10 | 2019-08-30 | 北京百度网讯科技有限公司 | 用于获取数据的方法和装置 |
CN112445821A (zh) * | 2019-08-29 | 2021-03-05 | 成都鼎桥通信技术有限公司 | 一种光伏电站的天气信息查询方法 |
CN111125751A (zh) * | 2019-12-03 | 2020-05-08 | 中盈优创资讯科技有限公司 | 数据库的防穿库方法及装置 |
CN112463813A (zh) * | 2020-11-19 | 2021-03-09 | 贝壳技术有限公司 | 数据缓存方法、装置、电子设备和存储介质 |
CN112818019A (zh) * | 2021-01-29 | 2021-05-18 | 北京思特奇信息技术股份有限公司 | 一种应用于Redis客户端的查询请求过滤方法及Redis客户端 |
CN112818019B (zh) * | 2021-01-29 | 2024-02-02 | 北京思特奇信息技术股份有限公司 | 一种应用于Redis客户端的查询请求过滤方法及Redis客户端 |
Also Published As
Publication number | Publication date |
---|---|
CN102682037B (zh) | 2016-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102682037A (zh) | 一种数据获取方法、系统及装置 | |
CN102546656B (zh) | 在社交网络中查找用户的方法、系统和装置 | |
US9846711B2 (en) | LSM cache | |
CN111340470B (zh) | 区块链交易处理方法、节点及合约容器 | |
JP5444477B2 (ja) | キャッシングのための方法、サーバ、コンピュータプログラム及びコンピュータプログラム製品 | |
CN102467572B (zh) | 支持重复数据删除程序的数据区块查询方法 | |
CN104731516A (zh) | 一种存取文件的方法、装置及分布式存储系统 | |
CN101867607A (zh) | 一种分布式数据存取方法、装置及系统 | |
CN111198856B (zh) | 文件管理方法、装置、计算机设备和存储介质 | |
CN105635196A (zh) | 一种获取文件数据的方法、系统和应用服务器 | |
CN102333130A (zh) | 一种访问缓存服务器的方法、系统及缓存智能调度器 | |
CN104768079A (zh) | 多媒体资源分发方法、装置及系统 | |
CN104253836B (zh) | 基于无线网络的图片显示方法、移动终端和系统 | |
WO2014161261A1 (zh) | 数据的存储方法及装置 | |
CN108280162A (zh) | 一种基于缓存的位置隐私保护方法 | |
CN111221469A (zh) | 同步缓存数据的方法、装置和系统 | |
CN102487375A (zh) | 一种在线下载视频的方法、装置和系统 | |
CN112711612A (zh) | 数据处理方法、装置和存储介质及电子装置 | |
CN102214174A (zh) | 一种海量数据信息检索系统及其方法 | |
CN102404372A (zh) | Web缓存中内容分布式存储的方法、系统及节点设备 | |
CN103825922B (zh) | 一种数据更新方法及web服务器 | |
CN111597259A (zh) | 数据存储系统、方法、装置、电子设备及存储介质 | |
CN105653646B (zh) | 一种并发查询条件下的动态查询系统及方法 | |
CN102609476A (zh) | 一种掌厅数据管理方法 | |
CN103491124A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1170035 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1170035 Country of ref document: HK |