CN109977261A - 一种数据请求的处理方法、装置及服务器 - Google Patents
一种数据请求的处理方法、装置及服务器 Download PDFInfo
- Publication number
- CN109977261A CN109977261A CN201910262296.7A CN201910262296A CN109977261A CN 109977261 A CN109977261 A CN 109977261A CN 201910262296 A CN201910262296 A CN 201910262296A CN 109977261 A CN109977261 A CN 109977261A
- Authority
- CN
- China
- Prior art keywords
- current
- identification
- bloom filter
- data
- type
- 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
- 238000003672 processing method Methods 0.000 title abstract description 11
- 230000006870 function Effects 0.000 claims description 50
- 238000000034 method Methods 0.000 claims description 34
- 238000004891 communication Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 14
- 239000002699 waste material Substances 0.000 abstract description 10
- 230000035515 penetration Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000007789 gas Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- QJGQUHMNIGDVPM-UHFFFAOYSA-N nitrogen group Chemical group [N] QJGQUHMNIGDVPM-UHFFFAOYSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Mobile Radio Communication Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据请求的处理方法,可以实现将不同类型的数据的标识信息记录在不同的布隆过滤器中,因此,可以针对各个类型的数据的预估数据量,设置各个布隆过滤器的存储空间,不需要像现有技术那样按数据量最多的类型来预留空位。可见,应用本发明实施例,不仅能够防止出现缓存穿透,而且解决了现有技术,在一个布隆过滤器中,为每一类型的数据都预留同样大小的存储空间,而造成的存储空间浪费的问题。
Description
技术领域
本发明涉及数据请求处理技术领域,特别是涉及一种数据请求的处理方法、装置及服务器。
背景技术
目前,在访问设置有缓存的数据库时,先是根据数据请求访问缓存,当从缓存中没有获得该数据请求对应的数据时,才会访问数据库。
在数据访问过程中,如果要访问的数据不存在于缓存中也不存在于数据库中,并且对该数据并发访问的请求量很大时,就会对数据库造成很大的压力,也就是出现了缓存穿透的问题。
现有技术中,为了防止出现缓存穿透,通常是预先将存储在数据库中的所有数据的标识信息,都记录至一个布隆过滤器中。在接收到一条数据请求时,首先判断请求数据的标识信息是否记录在该布隆过滤器中,如果请求数据的标识信息没有记录在该布隆过滤器中,则表明数据库中没有存储与该数据请求对应的请求数据,那么,丢弃该数据请求,不再继续访问缓存,从而避免缓存穿透的发生。
然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:
通常一个数据库中会存储多种类型的数据,比如:一个视频信息数据库存储的数据的类型有:视频专辑类型(ablum)、视频片段类型(episode)等。参见图1,现有技术在设计时,通常是先预估每一类型的数据对应的数据量,再按数据量最多的类型对应的数据量,来确定预留空位的个数,也就是确定预留存储空间的大小,然后,按照该确定的预留空位的个数,在同一个布隆过滤器中,为每一类型都预留多个空位用来记录标识信息。例如:预估ablum的数据量为9000个,预估episode的数据量为100个,那么,按ablum的数据量来确定预留空位的个数,比如:确定的预留空位的个数为10000个,就在同一个布隆过滤器中,为ablum和episode都预留10000个空位。在数据库中,并不是每一类型的数据的数据量都是同样多的,但像现有技术这样为每一类型都预留多个空位的设计方法,会造成了较大存储空间的浪费。例如:现有技术在设计时,每一类型都预留了10000个空位,而episode类型的数据实际可能仅有9000个,ablum类型的数据实际可能仅有100个,这就意味着,对于ablum类型来说,预留的空位中就有9900个空位不会被使用,造成了较大存储空间的浪费。并且,在实际应用中,为了便于后续扩充类型信息,现有技术在设计时,通常会在布隆过滤器中,为每一预留的类型信息也预留同样大小的存储空间,显然,这样造成的存储空间的浪费更多。
发明内容
本发明实施例的目的在于提供一种数据请求的处理方法、装置及服务器,以实现减少存储空间的浪费。具体技术方案如下:
为了达到上述目的,第一方面,本发明实施例提供了一种数据请求的处理方法,该方法,包括:
获得数据请求;所述数据请求中包含有请求数据的当前标识信息;所述当前标识信息中包含有请求数据的当前类型信息;
根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器;其中,每个布隆过滤器中,记录有对应类型的所有数据的标识信息,每个布隆过滤器的存储空间,是按对应类型的数据的预估数据量设置的;
判断所述当前布隆过滤器中,是否记录有所述当前标识信息;
如果所述当前布隆过滤器中,记录有所述当前标识信息,则将所述数据请求,发送至存储有请求数据的缓存或数据库;
如果所述当前布隆过滤器中,未记录有所述当前标识信息,则丢弃所述数据请求。
可选的,所述当前标识信息为:所述请求数据的当前ID标识;所述当前ID标识为正整数;所述当前ID标识具有第一预设数量位;
所述当前类型信息为:由所述当前ID标识末尾的第二预设数量位构成的当前类型标识位;所述第一预设数量大于所述第二预设数量。
可选的,采用如下步骤,针对每个布隆过滤器,记录其对应类型的所有数据的标识信息:
从数据库中,获得未记录至布隆过滤器中的数据的ID标识;
获得所述ID标识中的类型标识位;
按照预先保存的类型标识位与布隆过滤器之间的对应关系,将所述ID标识,记录至对应的布隆过滤器中。
可选的,所述将所述ID标识,记录至对应的布隆过滤器中的步骤,包括:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),确定所述ID标识在其对应的布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
将所述记录位置设置为1。
可选的,所述判断所述当前布隆过滤器中,是否记录有所述当前标识信息的步骤,包括:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),计算所述当前ID标识在所述当前布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
判断所述记录位置是否为1;
如果所述记录位置为1,则确定所述当前布隆过滤器中记录有所述请求数据的当前标识信息;
或者,如果所述记录位置不为1,则确定所述当前布隆过滤器中未记录有所述当前标识信息。
第二方面,本发明实施例提供了一种数据请求的处理装置,该装置,包括:
获得模块,用于获得数据请求;所述数据请求中包含有请求数据的当前标识信息;所述当前标识信息中包含有请求数据的当前类型信息;
确定模块,用于根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器;其中,每个布隆过滤器中,记录有对应类型的所有数据的标识信息,每个布隆过滤器的存储空间,是按对应类型的数据的预估数据量设置的;
判断模块,用于判断所述当前布隆过滤器中,是否记录有所述当前标识信息;
发送模块,用于当所述当前布隆过滤器中,记录有所述当前标识信息时,将所述数据请求,发送至存储有请求数据的缓存或数据库;
丢弃模块,用于当所述当前布隆过滤器中,未记录有所述当前标识信息时,丢弃所述数据请求。
可选的,所述当前标识信息为:所述请求数据的当前ID标识;所述当前ID标识为正整数;所述当前ID标识具有第一预设数量位;
所述当前类型信息为:由所述当前ID标识末尾的第二预设数量位构成的当前类型标识位;所述第一预设数量大于所述第二预设数量。
可选的,该装置,还包括:
记录模块,用于针对每个布隆过滤器,记录其对应类型信息的所有数据的标识信息:
所述记录模块,包括:
标识获得子模块,用于从数据库中,获得未记录至布隆过滤器中的数据的ID标识;
标识位获得子模块,用于获得所述ID标识中的类型标识位;
记录子模块,用于按照预先保存的类型标识位与布隆过滤器之间的对应关系,将所述ID标识,记录至对应的布隆过滤器中。
可选的,所述记录子模块,具体用于:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),确定所述ID标识在其对应的布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
将所述记录位置设置为1。
可选的,所述判断模块,具体用于:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),计算所述当前ID标识在所述当前布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
判断所述记录位置是否为1;
如果所述记录位置为1,则确定所述当前布隆过滤器中记录有所述当前标识信息;
或者,如果所述记录位置不为1,则确定所述当前布隆过滤器中未记录有所述当前标识信息。
第三方面,本发明实施例提供了一种服务器,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如下步骤:
获得数据请求;所述数据请求中包含有请求数据的当前标识信息;所述当前标识信息中包含有请求数据的当前类型信息;
根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器;其中,每个布隆过滤器中,记录有对应类型的所有数据的标识信息,每个布隆过滤器的存储空间,是按对应类型的数据的预估数据量设置的;
判断所述当前布隆过滤器中,是否记录有所述当前标识信息;
如果所述当前布隆过滤器中,记录有所述当前标识信息,则将所述数据请求,发送至存储有请求数据的缓存或数据库;
如果所述当前布隆过滤器中,未记录有所述当前标识信息,则丢弃所述数据请求。
本发明实施还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据请求处理方法的步骤。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一数据请求的处理方法。
本发明实施例提供的一种数据请求的处理方法、装置及服务器,可以在获得数据请求时,根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器;判断所述当前布隆过滤器中是否记录有所述请求数据的当前标识信息;如果所述当前布隆过滤器中,记录有所述当前标识信息,则将所述数据请求,发送至存储有请求数据的缓存或数据库;如果所述当前布隆过滤器中,未记录有所述当前标识信息,则丢弃所述数据请求。本发明实施例提供的方法,由于将不同类型的数据的标识信息记录在不同的布隆过滤器中,因此,可以针对各个类型的数据的预估数据量,设置各个布隆过滤器的存储空间,不需要像现有技术那样按数据量最多的类型来预留空位。可见,应用本发明实施例,不仅能够防止出现缓存穿透,而且解决了现有技术,在一个布隆过滤器中,为每一类型的数据都预留同样大小的存储空间,而造成的存储空间浪费的问题。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为现有技术中布隆过滤器记录数据库中的数据的结构示意图;
图2为本发明实施例提供的数据请求的处理方法的一种流程示意图;
图3a为本发明实施例提供的每个布隆过滤器,记录其对应类型信息的所有数据的标识信息的原理示意图;
图3b为基于图3a的原理,每个布隆过滤器,记录其对应类型信息的所有数据的标识信息的一种流程示意图;
图4为本发明实施例提供的数据请求的处理方法的另一种流程示意图;
图5为本发明实施例提供的数据请求的处理装置的一种结构示意图;
图6为本发明实施例提供的数据请求的处理装置的另一种结构示意图;
图7为图6所示实施例中记录模块的结构示意图;
图8为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
为了达到在处理访问数据库的数据请求时,减少对存储空间的浪费,本发明实施例提供了一种数据请求的处理方法,参见图2,该方法包括:
S201:获得数据请求;所述数据请求中包含有请求数据的当前标识信息;所述当前标识信息中包含有请求数据的当前类型信息;
S202:根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器;其中,每个布隆过滤器中,记录有对应类型信息的所有数据的标识信息,每个布隆过滤器的存储空间,是按对应类型的数据的预估数据量设置的;
具体的,所述当前标识信息可以为:所述请求数据的当前ID标识;所述当前ID标识为正整数;所述当前ID标识具有第一预设数量位;
所述当前类型信息可以为:由所述当前ID标识末尾的第二预设数量位构成的当前类型标识位;所述第一预设数量大于所述第二预设数量。
在一种具体的实施例中,当前ID标识可以由9位十进制数构成的,当前类型标识位可以由当前ID标识末尾的2或4位数构成。
在其他实施例中,当前ID标识还可以由预设数量位二进制数或八进制数构成,当前类型标识位可以由当前ID标识末尾的2、3或4位数构成。
例如:当前类型标识位是由当前ID标识末尾的2位数构成的,比如:请求数据的当前ID标识为:XXXXXXX30,那么,请求数据的当前类型标识位为:30。
具体的,根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器可以为:
根据数据请求中的当前类型标识位,按照预先保存的类型标识位与布隆过滤器之间的对应关系,从与不同类型标识位对应的多个布隆过滤器中,确定与所述当前类型信息对应的当前布隆过滤器。
例如,类型标识位与布隆过滤器的对应关系,可以如表一所示
表一
类型 | 类型标识位 | 布隆过滤器 |
视频专辑类型(ablum) | 01 | 布隆过滤器01 |
… | … | … |
视频片段类型(episode) | 12 | 布隆过滤器12 |
… | … | … |
xxx类型 | 99 | 布隆过滤器99 |
比如:数据请求中的当前类型标识位为:12,从预先保存的类型标识位与布隆过滤器之间的对应关系中,获知类型标识位12与布隆过滤器12之间有对应关系,那么,确定与所述当前类型信息对应的当前布隆过滤器为布隆过滤器12。
S203:判断所述当前布隆过滤器中,是否记录有所述当前标识信息;
具体的,判断所述当前布隆过滤器中,是否记录有所述当前标识信息的步骤,可以包括:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),计算当前ID标识在当前布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为第t个类型信息对应的类型标识位的个数;
判断当前ID标识在当前布隆过滤器中对应的记录位置是否为1;如果是1,则当前布隆过滤器中,记录有所述当前标识信息;如果不是1,则当前布隆过滤器中,没有记录所述请求数据的当前标识信息。
S204:如果所述当前布隆过滤器中,记录有所述当前标识信息,则将所述数据请求,发送至存储有请求数据的缓存或数据库;
具体的,在实际应用中,如果访问的是设有缓存的数据库,则当当前布隆过滤器中记录有当前标识信息时,可以将所述数据请求,发送至缓存;如果访问的是未设有缓存的数据库,则当当前布隆过滤器中记录有当前标识信息时,可以将所述数据请求,发送至数据库。
S205:如果所述当前布隆过滤器中,未记录有所述当前标识信息,则丢弃所述数据请求。
由图2所示的实施例可见,本发明实施例提供的数据请求的处理方法,由于将不同类型的数据的标识信息记录在不同的布隆过滤器中,因此,可以针对各个类型的数据的预估数据量,设置各个布隆过滤器的存储空间,不需要像现有技术那样按数据量最多的类型来预留空位。可见,应用本发明实施例,不仅能够防止出现缓存穿透,而且解决了现有技术,在一个布隆过滤器中,为每一类型的数据都预留同样大小的存储空间,而造成的存储空间浪费的问题。
可选的,参见图3a,针对每个布隆过滤器,记录其对应类型信息的所有数据的标识信息的原理如下:
从数据库中,获得未记录至布隆过滤器中的数据的ID标识,从ID标识中过滤出类型标识位,将该ID标识存储至对应类型的布隆过滤器中。
具体的,如图3b所示,本发明实施例可以采用如下步骤,针对每个布隆过滤器,记录其对应类型信息的所有数据的标识信息:
S301:从数据库中,获得未记录至布隆过滤器中的数据的ID标识;
S302:对所述ID标识进行过滤,获得所述ID标识中的类型标识位;
S303:按照预先保存的类型标识位与布隆过滤器之间的对应关系,将所述ID标识,记录至对应的布隆过滤器中。
具体的,将所述ID标识,记录至对应的布隆过滤器中的步骤,可以包括:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),确定ID标识在其对应的布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为第t个类型信息对应的类型标识位的个数;
将ID标识在其对应的布隆过滤器中对应的记录位置设置为1。
例如:从数据库中,获得未记录至布隆过滤器中的数据的ID标识为:123456730;获得该ID标识中的类型标识位为:30;
可以根据预先保存的不同类型标识位与不同布隆过滤器之间的对应关系,确定与类型标识位30对应的布隆过滤器为布隆过滤器30;
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),确定该ID标识在布隆过滤器30中对应的记录位置;具体的,参数key=123456730,t=30,o(t)=2,hash(123456730,30)=floor((123456730)/102)=1234567,这样就确定了该ID标识在布隆过滤器30中对应的记录位置为:1234567;将该记录位置设置为1,用于记录数据库中ID标识为123456730的数据。
在实际应用中,如果由于某些原因,数据库中第一个ID标识不是由1开始的,为了保证在布隆过滤器中是从第一个空位开始记录ID标识的,可以根据实际情况对哈希函数:hash(key,t)=floor((key)/10o(t))做以调整,比如,第一个ID标识是由90000000开始的,那么,在设计布隆过滤器中的哈希函数时,可以将哈希函数设计为:hash(key,t)=floor((key-90000000)/10o(t))或hash(key,t)=floor((key)/10o(t))-90000000。
本发明实施例所提供的方法,仅使用了一个哈希函数,来计算ID标识在布隆过滤器中的记录位置,相较于现有技术通常使用多个哈希函数计算记录位置,减少了哈希函数的使用个数,从而降低了计算的复杂度及减少了计算时长。
另外,由于在数据库中为每一类型的数据分配的ID标识通常是连续的,而在本发明实施例中,由于是利用哈希函数:hash(key,t)=floor((key)/10o(t))来计算ID标识在布隆过滤器中的记录位置,而利用该哈希函数计算得到的记录位置与ID标识中除类型标识位外的数字都是一样的,因此可以使得数据在布隆过滤器中的记录位置也是连续的,从而可以避免由于记录位置不连续,导致的可能存在有的记录位置没有被使用到问题,可以确保布隆过滤器中的存储空间得到最大限度的利用。
此外,当某一布隆过滤器的存储空间不足时,本发明实施例提供的方法,仅需要扩充该布隆过滤器的存储空间,较为方便和灵活,并且,由于利用本发明实施例提供的哈希函数,数据在布隆过滤器中的记录位置是连续的,因此,可以避免现有技术中由于记录位置不连续,导致的在扩充布隆过滤器的存储空间后,需要重新计算数据在布隆过滤器中的记录位置的问题。
参见图4,在一种具体的实施例中,针对设有缓存的数据库数据请求的处理过程可以为:
S401:获得数据请求;
S402:根据该数据请求中的当前ID标识中的当前类型标识位,确定与该当前类型标识位对应的当前布隆过滤器;
S403:利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),计算与该ID标识在当前布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
S404:判断该记录位置是否为1;如果该记录位置为1,则执行步骤S405;如果该记录位置不为1,则执行步骤S406;
S405:将该数据请求,发送至缓存;
S406:丢弃该数据请求。
例如:类型过滤器,获得的数据请求中的当前ID标识为:120000112,该当前ID标识中的当前类型标识位为:12;
可以根据预先保存的不同类型标识位与不同布隆过滤器之间的对应关系,确定与当前类型标识位12对应的当前布隆过滤器为布隆过滤器12;
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),计算该当前ID标识在布隆过滤器12中对应的记录位置;具体的,参数key=120000112,t=12,o(t)=2,hash(120000112,12)=floor((120000112)/102)=1200001,这样就得到了该当前ID标识在布隆过滤器12中对应的记录位置为:1200001;
进一步的,判断记录位置1200001是否为1;如果该记录位置为1,则将该数据请求,发送至缓存;如果该记录位置不为1,则丢弃该数据请求。
在其他实施例中,如果访问的是未设有缓存的数据库,那么,步骤S401-S404及S406不变,只有步骤S405变为:将该数据请求,发送至数据库。
本发明实施例提供的数据请求的处理方法,由于将不同类型的数据的标识信息记录在不同的布隆过滤器中,因此,可以针对各个类型的数据的预估数据量,设置各个布隆过滤器的存储空间,不需要像现有技术那样按数据量最多的类型来预留空位。可见,应用本发明实施例,不仅能够防止出现缓存穿透,而且解决了现有技术,在一个布隆过滤器中,为每一类型的数据都预留同样大小的存储空间,而造成的存储空间浪费的问题。
另外,在后续扩充类型信息时,本发明实施例所提供的方法,只需要新增一个布隆过滤器和添加一条新增类型信息与新增布隆过滤器的对应关系就可以了,相较于现有技术在一个布隆过滤器中,为每一预留的类型信息提前预留同样大小的存储空间,本发明实施例所提供的方法更为方便、灵活,且不用提前为每一预留的类型信息提前预留存储空间,进一步减少了存储空间的浪费。
与图2所示实施例对应的,本发明实施例还提供了一种数据请求的处理装置,参见图5,该装置可以包括:
获得模块501,用于获得数据请求;所述数据请求中包含有请求数据的当前标识信息;所述当前标识信息中包含有请求数据的当前类型信息;
确定模块502,用于根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器;其中,每个布隆过滤器中,记录有对应类型的所有数据的标识信息,每个布隆过滤器的存储空间,是按对应类型的数据的预估数据量设置的;
判断模块503,用于判断所述当前布隆过滤器中,是否记录有所述当前标识信息;
发送模块504,用于当所述当前布隆过滤器中,记录有所述当前标识信息时,将所述数据请求,存储有请求数据的缓存或数据库;
丢弃模块505,用于当所述当前布隆过滤器中,未记录有所述当前标识信息时,丢弃所述数据请求。
可选的,所述当前标识信息为:所述请求数据的当前ID标识;所述当前ID标识为正整数;所述当前ID标识具有第一预设数量位;
所述当前类型信息为:由所述当前ID标识末尾的第二预设数量位构成的当前类型标识位;所述第一预设数量大于所述第二预设数量。
参见图6,可选的,该装置,还包括:
记录模块601,用于针对每个布隆过滤器,记录其对应类型信息的所有数据的标识信息:
参见图7,所述记录模块601,包括:
标识获得子模701,用于从数据库中,获得未记录至布隆过滤器中的数据的ID标识;
标识位获得子模块702,用于获得所述ID标识中的类型标识位;
记录子模块703,用于按照预先保存的类型标识位与布隆过滤器之间的对应关系,将所述ID标识,记录至对应的布隆过滤器中。
可选的,所述记录子模块703,具体用于:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),确定所述ID标识在其对应的布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
将所述记录位置设置为1。
可选的,所述判断模块503,具体用于:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),计算所述当前ID标识在所述当前布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
判断所述记录位置是否为1;
如果所述记录位置为1,则确定所述当前布隆过滤器中记录有所述当前标识信息;
如果所述记录位置不为1,则确定所述当前布隆过滤器中未记录有所述当前标识信息。
本发明实施例提供的数据请求的处理装置,由于将不同类型的数据的标识信息记录在不同的布隆过滤器中,因此,可以针对各个类型的数据的预估数据量,设置各个布隆过滤器的存储空间,不需要像现有技术那样按数据量最多的类型来预留空位。可见,应用本发明实施例,不仅能够防止出现缓存穿透,而且解决了现有技术,在一个布隆过滤器中,为每一类型的数据都预留同样大小的存储空间,而造成的存储空间浪费的问题。
与图2所示实施例对应的,本发明实施例还提供了一种服务器,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现如下步骤:
获得数据请求;所述数据请求中包含有请求数据的当前标识信息;所述当前标识信息中包含有请求数据的当前类型信息;
根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器;所述每个布隆过滤器中,记录有对应类型信息的所有数据的标识信息,每个布隆过滤器的存储空间,是按对应类型的数据的预估数据量设置的;
判断所述当前布隆过滤器中,是否记录有所述当前标识信息;
如果所述当前布隆过滤器中,记录有所述当前标识信息,则将所述数据请求,存储有请求数据的缓存或数据库;
如果所述当前布隆过滤器中,未记录有所述当前标识信息,则丢弃所述数据请求。
本发明实施例提供的服务器,由于将不同类型的数据的标识信息记录在不同的布隆过滤器中,因此,可以针对各个类型的数据的预估数据量,设置各个布隆过滤器的存储空间,不需要像现有技术那样按数据量最多的类型来预留空位。可见,应用本发明实施例,不仅能够防止出现缓存穿透,而且解决了现有技术,在一个布隆过滤器中,为每一类型的数据都预留同样大小的存储空间,而造成的存储空间浪费的问题。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据请求的处理方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据请求的处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种数据请求的处理方法,其特征在于,所述方法,包括:
获得数据请求;所述数据请求中包含有请求数据的当前标识信息;所述当前标识信息中包含有请求数据的当前类型信息;
根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器;其中,每个布隆过滤器中,记录有对应类型的所有数据的标识信息,每个布隆过滤器的存储空间,是按对应类型的数据的预估数据量设置的;
判断所述当前布隆过滤器中,是否记录有所述当前标识信息;
如果所述当前布隆过滤器中,记录有所述当前标识信息,则将所述数据请求,发送至存储有请求数据的缓存或数据库;
如果所述当前布隆过滤器中,未记录有所述当前标识信息,则丢弃所述数据请求。
2.根据权利要求1所述的方法,其特征在于,
所述当前标识信息为:所述请求数据的当前ID标识;所述当前ID标识为正整数;所述当前ID标识具有第一预设数量位;
所述当前类型信息为:由所述当前ID标识末尾的第二预设数量位构成的当前类型标识位;所述第一预设数量大于所述第二预设数量。
3.根据权利要求2所述的方法,其特征在于,
采用如下步骤,针对每个布隆过滤器,记录其对应类型的所有数据的标识信息:
从数据库中,获得未记录至布隆过滤器中的数据的ID标识;
获得所述ID标识中的类型标识位;
按照预先保存的类型标识位与布隆过滤器之间的对应关系,将所述ID标识,记录至对应的布隆过滤器中。
4.根据权利要求3所述的方法,其特征在于,所述将所述ID标识,记录至对应的布隆过滤器中的步骤,包括:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),确定所述ID标识在其对应的布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
将所述记录位置设置为1。
5.根据权利要求4所述的方法,其特征在于,所述判断所述当前布隆过滤器中,是否记录有所述当前标识信息的步骤,包括:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),计算所述当前ID标识在所述当前布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
判断所述记录位置是否为1;
如果所述记录位置为1,则确定所述当前布隆过滤器中记录有所述请求数据的当前标识信息;
或者,如果所述记录位置不为1,则确定所述当前布隆过滤器中未记录有所述当前标识信息。
6.一种数据请求的处理装置,其特征在于,所述装置,包括:
获得模块,用于获得数据请求;所述数据请求中包含有请求数据的当前标识信息;所述当前标识信息中包含有请求数据的当前类型信息;
确定模块,用于根据预设的不同类型信息与不同布隆过滤器之间的对应关系,确定与所述当前类型信息对应的当前布隆过滤器;其中,每个布隆过滤器中,记录有对应类型的所有数据的标识信息,每个布隆过滤器的存储空间,是按对应类型的数据的预估数据量设置的;
判断模块,用于判断所述当前布隆过滤器中,是否记录有所述当前标识信息;
发送模块,用于当所述当前布隆过滤器中,记录有所述当前标识信息时,将所述数据请求,发送至存储有请求数据的缓存或数据库;
丢弃模块,用于当所述当前布隆过滤器中,未记录有所述当前标识信息时,丢弃所述数据请求。
7.根据权利要求6所述的装置,其特征在于,
所述当前标识信息为:所述请求数据的当前ID标识;所述当前ID标识为正整数;所述当前ID标识具有第一预设数量位;
所述当前类型信息为:由所述当前ID标识末尾的第二预设数量位构成的当前类型标识位;所述第一预设数量大于所述第二预设数量。
8.根据权利要求7所述的装置,其特征在于,所述装置,还包括:
记录模块,用于针对每个布隆过滤器,记录其对应类型信息的所有数据的标识信息:
所述记录模块,包括:
标识获得子模块,用于从数据库中,获得未记录至布隆过滤器中的数据的ID标识;
标识位获得子模块,用于获得所述ID标识中的类型标识位;
记录子模块,用于按照预先保存的类型标识位与布隆过滤器之间的对应关系,将所述ID标识,记录至对应的布隆过滤器中。
9.根据权利要求8所述的装置,其特征在于,所述记录子模块,具体用于:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),确定所述ID标识在其对应的布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
将所述记录位置设置为1。
10.根据权利要求9所述的装置,其特征在于,所述判断模块,具体用于:
利用预设的哈希函数:hash(key,t)=floor((key)/10o(t)),计算所述当前ID标识在所述当前布隆过滤器中对应的记录位置;其中,key表示ID标识,t表示第t个类型信息,floor()函数为向下取整函数,o(t)为所述第t个类型信息对应的类型标识位的个数;
判断所述记录位置是否为1;
如果所述记录位置为1,则确定所述当前布隆过滤器中记录有所述当前标识信息;
或者,如果所述记录位置不为1,则确定所述当前布隆过滤器中未记录有所述当前标识信息。
11.一种服务器,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910262296.7A CN109977261B (zh) | 2019-04-02 | 2019-04-02 | 一种数据请求的处理方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910262296.7A CN109977261B (zh) | 2019-04-02 | 2019-04-02 | 一种数据请求的处理方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109977261A true CN109977261A (zh) | 2019-07-05 |
CN109977261B CN109977261B (zh) | 2021-11-26 |
Family
ID=67082398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910262296.7A Active CN109977261B (zh) | 2019-04-02 | 2019-04-02 | 一种数据请求的处理方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109977261B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062013A (zh) * | 2019-12-18 | 2020-04-24 | 北京爱奇艺科技有限公司 | 一种账号过滤方法、装置、电子设备及机器可读存储介质 |
EP3799052A1 (en) * | 2019-09-30 | 2021-03-31 | Siemens Healthcare GmbH | Providing and receiving medical data records |
WO2021057482A1 (zh) * | 2019-09-26 | 2021-04-01 | 深圳前海微众银行股份有限公司 | 一种区块链中布隆过滤器的生成方法及装置 |
CN113536034A (zh) * | 2021-09-17 | 2021-10-22 | 飞狐信息技术(天津)有限公司 | 一种基于布隆过滤器的数据写入方法和数据读取方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294311A1 (en) * | 2005-06-24 | 2006-12-28 | Yahoo! Inc. | Dynamic bloom filter for caching query results |
US20100070514A1 (en) * | 2008-09-15 | 2010-03-18 | Coremetrics,Inc. | System and method of using a bloom filter in a web analytics application |
CN102253991A (zh) * | 2011-05-25 | 2011-11-23 | 北京星网锐捷网络技术有限公司 | Url存储方法、网页过滤方法、装置及系统 |
EP3026851A1 (en) * | 2014-11-27 | 2016-06-01 | Alcatel Lucent | Apparatus, network gateway, method and computer program for providing information related to a specific route to a service in a network |
CN105718455A (zh) * | 2014-12-01 | 2016-06-29 | 阿里巴巴集团控股有限公司 | 一种数据查询方法及装置 |
CN105812203A (zh) * | 2016-03-07 | 2016-07-27 | 亚信科技(南京)有限公司 | 一种请求消息处理方法及设备 |
CN106557383A (zh) * | 2015-09-24 | 2017-04-05 | 北京国双科技有限公司 | 一种数据恢复的方法及装置 |
CN106598984A (zh) * | 2015-10-16 | 2017-04-26 | 北京国双科技有限公司 | 网络爬虫的数据处理方法及装置 |
-
2019
- 2019-04-02 CN CN201910262296.7A patent/CN109977261B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294311A1 (en) * | 2005-06-24 | 2006-12-28 | Yahoo! Inc. | Dynamic bloom filter for caching query results |
US20100070514A1 (en) * | 2008-09-15 | 2010-03-18 | Coremetrics,Inc. | System and method of using a bloom filter in a web analytics application |
CN102253991A (zh) * | 2011-05-25 | 2011-11-23 | 北京星网锐捷网络技术有限公司 | Url存储方法、网页过滤方法、装置及系统 |
EP3026851A1 (en) * | 2014-11-27 | 2016-06-01 | Alcatel Lucent | Apparatus, network gateway, method and computer program for providing information related to a specific route to a service in a network |
CN105718455A (zh) * | 2014-12-01 | 2016-06-29 | 阿里巴巴集团控股有限公司 | 一种数据查询方法及装置 |
CN106557383A (zh) * | 2015-09-24 | 2017-04-05 | 北京国双科技有限公司 | 一种数据恢复的方法及装置 |
CN106598984A (zh) * | 2015-10-16 | 2017-04-26 | 北京国双科技有限公司 | 网络爬虫的数据处理方法及装置 |
CN105812203A (zh) * | 2016-03-07 | 2016-07-27 | 亚信科技(南京)有限公司 | 一种请求消息处理方法及设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021057482A1 (zh) * | 2019-09-26 | 2021-04-01 | 深圳前海微众银行股份有限公司 | 一种区块链中布隆过滤器的生成方法及装置 |
EP3799052A1 (en) * | 2019-09-30 | 2021-03-31 | Siemens Healthcare GmbH | Providing and receiving medical data records |
US11887704B2 (en) | 2019-09-30 | 2024-01-30 | Siemens Healthcare Gmbh | Providing and receiving medical data records |
CN111062013A (zh) * | 2019-12-18 | 2020-04-24 | 北京爱奇艺科技有限公司 | 一种账号过滤方法、装置、电子设备及机器可读存储介质 |
CN111062013B (zh) * | 2019-12-18 | 2022-06-03 | 北京爱奇艺科技有限公司 | 一种账号过滤方法、装置、电子设备及机器可读存储介质 |
CN113536034A (zh) * | 2021-09-17 | 2021-10-22 | 飞狐信息技术(天津)有限公司 | 一种基于布隆过滤器的数据写入方法和数据读取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109977261B (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109977261B (zh) | 一种数据请求的处理方法、装置及服务器 | |
US11003625B2 (en) | Method and apparatus for operating on file | |
CN109213604B (zh) | 一种数据源的管理方法和装置 | |
CN112799584B (zh) | 一种数据存储方法及装置 | |
CN107172171B (zh) | 一种服务请求处理方法、装置及计算机可读存储介质 | |
CN110266763B (zh) | 跨网段互连的区块链网络实现方法、系统及存储介质 | |
CN109743378B (zh) | 信息推送系统、信息推送方法及电子设备 | |
CN111062013B (zh) | 一种账号过滤方法、装置、电子设备及机器可读存储介质 | |
CN110008041B (zh) | 一种消息处理方法及装置 | |
CN114528231A (zh) | 一种数据动态存储方法、装置、电子设备及存储介质 | |
CN110069217B (zh) | 一种数据存储方法及装置 | |
CN107577775B (zh) | 一种读取数据方法、装置、电子设备及可读存储介质 | |
CN110311975B (zh) | 一种数据请求处理方法及装置 | |
CN111563199A (zh) | 一种数据处理方法及装置 | |
CN110083482B (zh) | 对文件存储系统进行纠删码处理的方法、装置及电子设备 | |
CN110891033B (zh) | 网络资源处理方法、装置、网关、控制器及存储介质 | |
CN106528876A (zh) | 分布式系统的信息处理方法及分布式信息处理系统 | |
CN110727895A (zh) | 一种敏感词发送方法、装置、电子设备及存储介质 | |
CN110955682A (zh) | 缓存数据的删除、数据缓存及缓存数据的读取方法及装置 | |
CN110955460A (zh) | 一种服务进程启动方法、装置、电子设备和存储介质 | |
CN112148676A (zh) | 一种文件访问请求处理方法、装置及服务器 | |
CN107870925B (zh) | 一种字符串过滤方法和相关装置 | |
CN111367461B (zh) | 一种存储空间管理方法及装置 | |
CN111209254A (zh) | 文件指纹获取方法、装置、电子设备以及存储介质 | |
CN112543213B (zh) | 一种数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |