CN111857850B - 过滤器的初始化方法、电子设备及存储介质 - Google Patents
过滤器的初始化方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111857850B CN111857850B CN202010706921.5A CN202010706921A CN111857850B CN 111857850 B CN111857850 B CN 111857850B CN 202010706921 A CN202010706921 A CN 202010706921A CN 111857850 B CN111857850 B CN 111857850B
- Authority
- CN
- China
- Prior art keywords
- initialization
- filter
- progressive
- length value
- preset
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种过滤器的初始化方法、电子设备及存储介质,方法包括:获取过滤器的长度值;根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数;根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令;初始化命令包括与渐进式初始化次数对应的过滤器的单次初始化长度值;依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。渐进式初始化方式完成对过滤器的初始化,将过滤器的一次初始化转化为渐进式的多次初始化,减少单次初始化的长度,大大降低了单次执行初始化命令的执行时间。降低长度值较大的过滤器在初始化时的执行时间,避免单次执行时间过长导致后续接收的请求阻塞等问题。
Description
技术领域
本发明涉及软件领域,具体涉及一种过滤器的初始化方法、电子设备及存储介质。
背景技术
数据库在查询数据较慢时,为提高响应速度引入缓存技术,将数据存储在缓存中,方便直接从缓存中提取数据。查询请求的流程一般先查缓存,缓存中存在数据的话直接返回,如果缓存中没有查到数据,去数据库查询,然后再将从数据库取出的数据放入缓存。但当大量查询请求都请求不存在缓存中的数据时,导致每次请求都要去数据库去查询,失去了缓存存在的意义,甚至会造成数据库宕机,导致缓存击穿。
基于以上问题,可以采用过滤器以有效地应对缓存击穿。过滤器可以采用如布隆过滤器,缓存采用如redis为例进行说明(此处不做限定)。利用redis的setbit功能将数值放进布隆过滤器中,利用getbit判断数值是否存在布隆过滤器中。在redis中创建布隆过滤器时,执行setbit函数来初始化布隆过滤器。具体的,根据setbit函数的数值来初始化布隆过滤器。当第一次执行setbit函数时,根据setbit函数的数值value,对应的将布隆过滤器的二进制向量的第value位为1,第0位至第value-1位全都设置为0,完成布隆过滤器的初始化。布隆过滤器初始化所需的时间与value密切相关。value是将需要存储的对象以一个或多个hash函数计算得到的数值,可视为随机产生。当布隆过滤器需要的长度是10亿时,value的最大值就有可能是10亿。当value过大时,相当于在redis创建了一个非常长的字符串,那么这种操作是非常耗时的,会引起redis的阻塞,严重影响redis的执行性能,导致其它请求无法及时被执行。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的过滤器的初始化方法、电子设备及存储介质。
根据本发明的一个方面,提供了一种过滤器的初始化方法,其包括:
获取过滤器的长度值;
根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数;
根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令;初始化命令包括与渐进式初始化次数对应的过滤器的单次初始化长度值;
依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。
根据本发明的另一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行以下操作:
获取过滤器的长度值;
根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数;
根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令;初始化命令包括与渐进式初始化次数对应的过滤器的单次初始化长度值;
依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。
根据本发明的又一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行以下操作:
获取过滤器的长度值;
根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数;
根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令;初始化命令包括与渐进式初始化次数对应的过滤器的单次初始化长度值;
依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。
根据本发明提供的过滤器的初始化方法、电子设备及存储介质,获取过滤器的长度值;根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数;根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令;初始化命令包括与渐进式初始化次数对应的过滤器的单次初始化长度值;依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。通过渐进式初始化方式完成对过滤器的初始化,将过滤器的一次初始化转化为渐进式的多次初始化,减少单次初始化的长度,大大降低了单次执行初始化命令的执行时间。降低长度值较大的过滤器在初始化时的执行时间,避免单次执行时间过长导致后续接收的请求阻塞等问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的过滤器的初始化方法的流程示意图;
图2示出了根据本发明另一个实施例的过滤器的初始化方法的流程示意图;
图3示出了根据本发明一个实施例的一种电子设备的结构示意图。
具体实施方式
实施例一
图1示出了根据本发明一个实施例的过滤器的初始化方法的流程示意图,应用于redis数据库中的基于bitmap实现过滤器的初始化处理流程,如图1所示,该方法包括如下步骤:
步骤S101,获取过滤器的长度值。
过滤器的长度值即过滤器存储数据量的大小。过滤器的长度值可以根据过滤器待存储对象数量、错误率允许值等确定。当过滤器的长度值过短时,会导致没有足够空间存储待存储对象。且过滤器的长度值过短时,也易造成高错误率。针对以上可能发生的错误问题,设置错误率允许值。错误率允许值根据具体实施情况设置,此处不做限定。根据过滤器待存储对象数量、错误率允许值进行计算,得到过滤器长度值。过滤器的长度值与过滤器待存储对象数量成正比、与错误率允许值成反比。
为更好地理解本方案,本实施例以布隆过滤器为例进行说明。布隆过滤器为二进制向量,布隆过滤器的长度值即二进制向量可存储的数据量的大小。
步骤S102,根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数。
预设初始化阈值根据初始化过滤器的缓存服务器设置。具体的,根据缓存服务器的运行速度、指令执行速度等性能指标;缓存服务器接收请求量的大小等实际运行情况确定预设初始化阈值,以保障缓存服务器的正常运行。
将过滤器的长度值和预设初始化阈值相比较,按照预设初始化阈值将过滤器的长度值进行切分,可以确定过滤器对应的渐进式初始化的次数。
步骤S103,根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令。
具体可以如以下代码所示:其中,numBits为过滤器的长度值,INIT_RANGE为预设初始化阈值,bfName为过滤器名称,依次循环在管道队列中加入初始化命令。
for(int i=1;i<=numBits/INIT_RANGE;i++)
{
pipe.setbit(bfName,INIT_RANGE*i,false);
}
其中,初始化命令为渐进式初始化次数对应的初始化命令,其包括与渐进式初始化次数对应的过滤器的单次初始化长度值。第一次渐进式初始化次数i为1,初始化命令中过滤器的单次初始化长度值为INIT_RANGE*1;第二次渐进式初始化次数i为2,初始化命令中过滤器的单次初始化长度值为INIT_RANGE*2;依次类推,直至加入过滤器长度值的初始化命令。
初始化命令中的过滤器名称为需要初始化的同一过滤器名称,保障在初始化时会根据过滤器名称,为该过滤器渐进式初始化,依次初始化过滤器的不同位数。如INIT_RANGE为10,第一次渐进式初始化次数对应的初始化命令为初始化该过滤器的1-10位,第二次渐进式初始化次数对应的初始化命令为初始化该过滤器的11-20位,依次类推,直至到该过滤器的长度值对应的初始化命令。
以上为举例说明,具体代码实现方式、初始化命令等根据具体实施情况设置,此处不做限定。
步骤S104,依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。
执行步骤S103在管道队列中依次加入过滤器的所有初始化命令后,根据管道队列中初始化命令的加入顺序依次执行管道队列中存储的各个初始化命令。管道队列中初始化命令的加入顺序为第一次渐进式初始化次数对应的初始化命令、第二次渐进式初始化次数对应的初始化命令……依次增加直至过滤器的长度值对应的初始化命令。根据初始化命令的加入顺序依次执行管道队列中的这些初始化命令,即执行第一次渐进式初始化次数对应的初始化命令,初始化过滤器的1至预设初始化阈值位置,执行第二次渐进式初始化次数对应的初始化命令,初始化过滤器的预设初始化阈值+1位置至预设初始化阈值*2位置……以便按照过滤器中各位置的顺序依次对过滤器进行初始化。在执行完成管道队列中所有初始化命令后即依次渐进式对过滤器进行了一步步初始化,完成渐进式初始化过滤器。
进一步,管道队列可以存储初始化命令,也可以存储其它请求的执行命令,在渐进式初始化过滤器时,不影响其它请求的正常执行。如在管道队列中存储了几条初始化命令,但还没有存储过滤器全部的初始化命令时,若接收到其它请求的执行命令,将其它请求的执行命令存储在管道队列中。管道在执行管道队列存储的命令时,会按照各种命令的加入顺序依次执行初始化命令、其它请求的执行命令、初始化命令等。由于渐进式初始化过滤器的初始化命令会按照顺序依次初始化过滤器的各个位置,即使中间执行其它请求的执行命令,也不会影响过滤器的初始化。且预设初始化阈值是根据为过滤器提供初始化服务的缓存服务器进行设置的,具体的,根据缓存服务器进行过滤器初始化时的配置参数、执行性能、处理数据量大小等情况设置预设初始化阈值,以保障缓存服务器在初始化预设初始化阈值长度的过滤器时,执行时间不会过长,不会影响其它请求的执行。根据缓存服务器设置的预设初始化阈值,可以保障对应的执行每条初始化命令的时间不会过长,不会造成其它请求的长时间阻塞。
在一个可选地实施例场景中,缓存服务器可以采用如redis,过滤器为布隆过滤器。使用redis的setbit函数来初始化一个过滤器,在redis中初始化一个bitmap,bitmap的长度值即过滤器的长度值。根据过滤器的长度值渐进式初始化该过滤器,避免现有技术中根据setbit函数的值来初始化过滤器,当setbit函数的值过大导致执行时间过长造成其它请求的阻塞问题等。
根据本发明提供的过滤器的初始化方法,获取过滤器的长度值;根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数;根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令;初始化命令包括与渐进式初始化次数对应的过滤器的单次初始化长度值;依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。通过渐进式初始化方式完成对过滤器的初始化,将过滤器的一次初始化转化为渐进式的多次初始化,减少单次初始化的长度,大大降低了单次执行初始化命令的执行时间。降低长度值较大的过滤器在初始化时的执行时间,避免单次执行时间过长导致后续接收的请求阻塞等问题。
实施例二
图2示出了根据本发明另一个实施例的过滤器的初始化方法的流程示意图,如图2所示,该方法包括如下步骤:
步骤S201,获取过滤器的长度值。
根据过滤器待存储对象数量、错误率允许值等确定过滤器的长度值。
步骤S202,判断过滤器的长度值是否大于预设初始化阈值。
在获取到过滤器的长度值后,判断过滤器的长度值是否大于预设初始化阈值,若过滤器的长度值小于或等于预设初始化阈值,则说明过滤器的初始化不会影响到其它请求,可以直接一次性完成对过滤器的初始化。若过滤器的长度值大于预设初始化阈值,则需采用渐进式初始化方式来初始化过滤器,以减少执行单次初始化命令的时间,执行步骤S203。
步骤S203,判断触发过滤器的渐进式初始化的进程是否获取执行锁。
由于过滤器在缓存服务器中初始化,缓存服务器会接收不同客户端触发的过滤器的渐进式初始化请求,为防止在多个服务节点同时启动重复地执行对过滤器的初始化操作,本实施例由触发过滤器的渐进式初始化的各进程是否获取执行锁争抢执行锁,在进行渐进式初始化之前,判断触发过滤器的渐进式初始化的进程是否获取到了执行锁,若获取到执行锁,则执行步骤S204,由获取到执行锁的进程来执行渐进式初始化操作。
步骤S204,根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数。
根据过滤器的长度值将其按照预设初始化阈值进行划分,确定过滤器渐进式初始化次数。
步骤S205,根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令。
根据渐进式初始化次数,在管道队列中依次存储各个初始化命令,来渐进式增加过滤器要初始化的位置长度,直至到达过滤器的长度值。进一步,若过滤器的长度值不能被预设初始化阈值整除时,对于小于预设初始化阈值的余数,由于其较小,可以忽略不计,不影响过滤器的本身的正常使用。
步骤S206,依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。
依次执行管道队列中存储的各个初始化命令,来完成对过滤器的初始化。与现有技术直接一次性完成过滤器初始化相比,如在redis中直接执行setbit函数进行一次性初始化,setbit函数的value为729844083,执行一次setbit函数,耗时59024微秒即59毫秒,此时连接到redis的所有请求都会阻塞59毫秒。使用渐进式初始化过滤器,如预设初始化阈值为8389013,执行setbit函数需执行87次,总耗时378255微秒即379毫秒,平均每次耗时4347.76微秒即4毫秒。虽然总耗时增加,但单次初始化命令执行的时间不到原来的1/10,当接收到其它请求的执行命令时,其它请求仅需等待最多4毫秒,不会引起连接到redis的请求长时间阻塞。通过渐进式初始化过滤器大大降低单次执行初始化命令的时间,减少其它请求的阻塞问题。以上为举例说明,具体实施时根据实际缓存服务器、实际需初始化的过滤器进行设置,此处不做限定。
步骤S207,将执行锁持久化处理。
在完成对过滤器的渐进式初始化后,将执行锁进行持久化处理,方便后续当进程服务重启时,避免对过滤器再执行初始化操作。
根据本发明提供的过滤器的初始化方法,通过设置预设初始化阈值,确定过滤器对应的渐进式初始化次数,以便根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令。利用管道队列的执行特性完成渐进式初始化过滤器。进一步,为避免多个服务节点同时启动重复地执行对过滤器的初始化操作,增加判断触发过滤器的渐进式初始化的进程是否获取到了执行锁,由获取到执行锁的进程来执行渐进式初始化操作,以避免上述过滤器被重复初始化的问题。且在完成过滤器渐进式初始化后,将执行锁持久化处理,避免服务重启造成的重复初始化操作。
实施例三
本申请实施例三提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的过滤器的初始化方法。
可执行指令具体可以用于使得处理器执行以下操作:
获取过滤器的长度值;根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数;根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令;初始化命令包括与渐进式初始化次数对应的过滤器的单次初始化长度值;依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。
在一种可选的实施方式中,可执行指令进一步使处理器执行以下操作:根据过滤器待存储对象数量和/或错误率允许值确定过滤器的长度值。
在一种可选的实施方式中,预设初始化阈值根据初始化过滤器的缓存服务器设置。
在一种可选的实施方式中,可执行指令进一步使处理器执行以下操作:根据管道队列中初始化命令的加入顺序依次执行管道队列中存储的各个初始化命令;执行完成管道队列中所有初始化命令后,完成渐进式初始化过滤器。
在一种可选的实施方式中,可执行指令进一步使处理器执行以下操作:判断触发过滤器的渐进式初始化的进程是否获取执行锁;若是,执行根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数的步骤;在依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器之后,将执行锁持久化处理。
在一种可选的实施方式中,可执行指令进一步使处理器执行以下操作:判断过滤器的长度值是否大于预设初始化阈值;若是,执行根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数的步骤。
实施例四
图3示出了根据本发明实施例四的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图3所示,该电子设备可以包括:处理器(processor)302、通信接口(Communications Interface)304、存储器(memory)306、以及通信总线308。
其中:
处理器302、通信接口304、以及存储器306通过通信总线308完成相互间的通信。
通信接口304,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器302,用于执行程序310,具体可以执行上述过滤器的初始化方法实施例中的相关步骤。
具体地,程序310可以包括程序代码,该程序代码包括计算机操作指令。
处理器302可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。服务器包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器306,用于存放程序310。存储器306可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序310具体可以用于使得处理器302执行以下操作:
获取过滤器的长度值;根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数;根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令;初始化命令包括与渐进式初始化次数对应的过滤器的单次初始化长度值;依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。
在一种可选的实施方式中,程序310用于使得处理器302根据过滤器待存储对象数量和/或错误率允许值确定过滤器的长度值。
在一种可选的实施方式中,预设初始化阈值根据初始化过滤器的缓存服务器设置。
在一种可选的实施方式中,程序310用于使得处理器302根据管道队列中初始化命令的加入顺序依次执行管道队列中存储的各个初始化命令;执行完成管道队列中所有初始化命令后,完成渐进式初始化过滤器。
在一种可选的实施方式中,程序310用于使得处理器302判断触发过滤器的渐进式初始化的进程是否获取执行锁;若是,执行根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数的步骤;在依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器之后,将执行锁持久化处理。
在一种可选的实施方式中,程序310用于使得处理器302判断过滤器的长度值是否大于预设初始化阈值;若是,执行根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数的步骤。
程序310中各步骤的具体实现可以参见上述过滤器的初始化实施例中的相应步骤中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
通过本实施例提供的方案,获取过滤器的长度值;根据过滤器的长度值以及预设初始化阈值确定过滤器对应的渐进式初始化次数;根据渐进式初始化次数,在管道队列中依次加入与渐进式初始化次数对应的初始化命令;初始化命令包括与渐进式初始化次数对应的过滤器的单次初始化长度值;依次执行管道队列中存储的各个初始化命令,以渐进式初始化过滤器。通过渐进式初始化方式完成对过滤器的初始化,将过滤器的一次初始化转化为渐进式的多次初始化,减少单次初始化的长度,大大降低了单次执行初始化命令的执行时间。降低长度值较大的过滤器在初始化时的执行时间,避免单次执行时间过长导致后续接收的请求阻塞等问题。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (15)
1.一种过滤器的初始化方法,其包括:
获取过滤器的长度值;所述过滤器为布隆过滤器;其中,根据所述过滤器待存储对象数量和/或错误率允许值确定所述过滤器的长度值;
根据所述过滤器的长度值以及预设初始化阈值,按照预设初始化阈值将过滤器的长度值进行切分,确定所述过滤器对应的渐进式初始化次数;
根据所述渐进式初始化次数,在管道队列中依次加入与所述渐进式初始化次数对应的初始化命令;所述初始化命令包括与所述渐进式初始化次数对应的过滤器的单次初始化长度值;其中,所述初始化命令中的过滤器名称为需要初始化的同一过滤器名称,以保障在初始化时根据过滤器名称,为该过滤器渐进式初始化,依次初始化过滤器的不同位数;所述管道队列存储所述初始化命令以及除所述初始化命令外的请求的执行命令;
依次执行管道队列中存储的各个初始化命令,以渐进式初始化所述过滤器。
2.根据权利要求1所述的方法,其中,所述预设初始化阈值根据为所述过滤器提供初始化服务的缓存服务器进行设置;所述预设初始化阈值与所述缓存服务器的配置参数、执行性能和/或处理数据量对应。
3.根据权利要求1或2所述的方法,其中,所述依次执行管道队列中存储的各个初始化命令,以渐进式初始化所述过滤器进一步包括:
根据管道队列中所述初始化命令的加入顺序依次执行管道队列中存储的各个初始化命令;
执行完成管道队列中所有初始化命令后,完成渐进式初始化所述过滤器。
4.根据权利要求1或2所述的方法,其中,所述方法还包括:
判断触发所述过滤器的渐进式初始化的进程是否获取执行锁;
若是,执行所述根据所述过滤器的长度值以及预设初始化阈值,按照预设初始化阈值将过滤器的长度值进行切分,确定所述过滤器对应的渐进式初始化次数的步骤;
在所述依次执行管道队列中存储的各个初始化命令,以渐进式初始化所述过滤器之后,所述方法还包括:
将所述执行锁持久化处理。
5.根据权利要求1或2所述的方法,其中,所述方法还包括:
判断所述过滤器的长度值是否大于所述预设初始化阈值;
若是,执行所述根据所述过滤器的长度值以及预设初始化阈值确定所述过滤器对应的渐进式初始化次数的步骤。
6.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行以下操作:
获取过滤器的长度值;所述过滤器为布隆过滤器;其中,根据所述过滤器待存储对象数量和/或错误率允许值确定所述过滤器的长度值;
根据所述过滤器的长度值以及预设初始化阈值,按照预设初始化阈值将过滤器的长度值进行切分,确定所述过滤器对应的渐进式初始化次数;
根据所述渐进式初始化次数,在管道队列中依次加入与所述渐进式初始化次数对应的初始化命令;所述初始化命令包括与所述渐进式初始化次数对应的过滤器的单次初始化长度值;其中,所述初始化命令中的过滤器名称为需要初始化的同一过滤器名称,以保障在初始化时根据过滤器名称,为该过滤器渐进式初始化,依次初始化过滤器的不同位数;所述管道队列存储所述初始化命令以及除所述初始化命令外的请求的执行命令;
依次执行管道队列中存储的各个初始化命令,以渐进式初始化所述过滤器。
7.根据权利要求6所述的电子设备,所述预设初始化阈值根据为所述过滤器提供初始化服务的缓存服务器进行设置;所述预设初始化阈值与所述缓存服务器的配置参数、执行性能和/或处理数据量对应。
8.根据权利要求6或7所述的电子设备,所述可执行指令进一步使所述处理器执行以下操作:
根据管道队列中所述初始化命令的加入顺序依次执行管道队列中存储的各个初始化命令;
执行完成管道队列中所有初始化命令后,完成渐进式初始化所述过滤器。
9.根据权利要求6或7所述的电子设备,所述可执行指令进一步使所述处理器执行以下操作:
判断触发所述过滤器的渐进式初始化的进程是否获取执行锁;
若是,执行所述根据所述过滤器的长度值以及预设初始化阈值,按照预设初始化阈值将过滤器的长度值进行切分,确定所述过滤器对应的渐进式初始化次数的步骤;
在依次执行管道队列中存储的各个初始化命令,以渐进式初始化所述过滤器之后,将所述执行锁持久化处理。
10.根据权利要求6或7所述的电子设备,所述可执行指令进一步使所述处理器执行以下操作:
判断所述过滤器的长度值是否大于所述预设初始化阈值;
若是,执行所述根据所述过滤器的长度值以及预设初始化阈值确定所述过滤器对应的渐进式初始化次数的步骤。
11.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行以下操作:
获取过滤器的长度值;所述过滤器为布隆过滤器;其中,根据所述过滤器待存储对象数量和/或错误率允许值确定所述过滤器的长度值;
根据所述过滤器的长度值以及预设初始化阈值,按照预设初始化阈值将过滤器的长度值进行切分,确定所述过滤器对应的渐进式初始化次数;
根据所述渐进式初始化次数,在管道队列中依次加入与所述渐进式初始化次数对应的初始化命令;所述初始化命令包括与所述渐进式初始化次数对应的过滤器的单次初始化长度值;其中,所述初始化命令中的过滤器名称为需要初始化的同一过滤器名称,以保障在初始化时根据过滤器名称,为该过滤器渐进式初始化,依次初始化过滤器的不同位数;所述管道队列存储所述初始化命令以及除所述初始化命令外的请求的执行命令;
依次执行管道队列中存储的各个初始化命令,以渐进式初始化所述过滤器。
12.根据权利要求11所述的计算机存储介质,所述预设初始化阈值根据为所述过滤器提供初始化服务的缓存服务器进行设置;所述预设初始化阈值与所述缓存服务器的配置参数、执行性能和/或处理数据量对应。
13.根据权利要求11或12所述的计算机存储介质,所述可执行指令进一步使所述处理器执行以下操作:
根据管道队列中所述初始化命令的加入顺序依次执行管道队列中存储的各个初始化命令;
执行完成管道队列中所有初始化命令后,完成渐进式初始化所述过滤器。
14.根据权利要求11或12所述的计算机存储介质,所述可执行指令进一步使所述处理器执行以下操作:
判断触发所述过滤器的渐进式初始化的进程是否获取执行锁;
若是,执行所述根据所述过滤器的长度值以及预设初始化阈值,按照预设初始化阈值将过滤器的长度值进行切分,确定所述过滤器对应的渐进式初始化次数的步骤;
在依次执行管道队列中存储的各个初始化命令,以渐进式初始化所述过滤器之后,将所述执行锁持久化处理。
15.根据权利要求11或12所述的计算机存储介质,所述可执行指令进一步使所述处理器执行以下操作:
判断所述过滤器的长度值是否大于所述预设初始化阈值;
若是,执行所述根据所述过滤器的长度值以及预设初始化阈值确定所述过滤器对应的渐进式初始化次数的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010706921.5A CN111857850B (zh) | 2020-07-21 | 2020-07-21 | 过滤器的初始化方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010706921.5A CN111857850B (zh) | 2020-07-21 | 2020-07-21 | 过滤器的初始化方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111857850A CN111857850A (zh) | 2020-10-30 |
CN111857850B true CN111857850B (zh) | 2022-03-25 |
Family
ID=73001967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010706921.5A Active CN111857850B (zh) | 2020-07-21 | 2020-07-21 | 过滤器的初始化方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111857850B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
CN104604303A (zh) * | 2012-09-21 | 2015-05-06 | 苹果公司 | 用于选择高功率高性能接收器或低功率基本接收器的数据调度活动监测 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100487704C (zh) * | 2007-07-18 | 2009-05-13 | 湖南大学 | 一种可扩展的布鲁姆过滤器查询方法及其元素插入方法 |
US20130226941A1 (en) * | 2012-02-28 | 2013-08-29 | Ramakumar Kosuru | System and method for classifying signals using the bloom filter |
CN105320654B (zh) * | 2014-05-28 | 2018-08-31 | 中国科学院深圳先进技术研究院 | 动态布隆过滤器和基于动态布隆过滤器的元素操作方法 |
US11392644B2 (en) * | 2017-01-09 | 2022-07-19 | President And Fellows Of Harvard College | Optimized navigable key-value store |
CN107506396A (zh) * | 2017-07-31 | 2017-12-22 | 努比亚技术有限公司 | 一种数据缓存初始化方法、移动终端以及计算机可读存储介质 |
CN108133031B (zh) * | 2017-12-29 | 2021-01-29 | 北京搜狐新媒体信息技术有限公司 | 一种过滤推荐视频候选结果的方法及装置 |
CN108804242B (zh) * | 2018-05-23 | 2022-03-22 | 武汉斗鱼网络科技有限公司 | 一种数据计数去重方法、系统、服务器及存储介质 |
CN110162529B (zh) * | 2019-05-27 | 2021-02-12 | 广州方硅信息技术有限公司 | 一种数据处理方法、业务服务器及数据处理系统 |
-
2020
- 2020-07-21 CN CN202010706921.5A patent/CN111857850B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923568A (zh) * | 2010-06-23 | 2010-12-22 | 北京星网锐捷网络技术有限公司 | 布隆过滤器的元素增加、删除方法以及布隆过滤器 |
CN104604303A (zh) * | 2012-09-21 | 2015-05-06 | 苹果公司 | 用于选择高功率高性能接收器或低功率基本接收器的数据调度活动监测 |
Non-Patent Citations (2)
Title |
---|
关于布隆过滤器在BSS中应用;王鹏;《中国新通信》;20170105;第95-96段 * |
布隆过滤器实现代码php+redis;泥土里的绽放;《https://www.cnblogs.com/cjjjj/p/12812999.html》;博客园;20200501;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111857850A (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831751B2 (en) | Query parallelism method | |
US10225145B2 (en) | Method and device for updating client | |
KR102018445B1 (ko) | 캐스캐이딩 스타일 시트 파일들의 압축 | |
CN111858651A (zh) | 一种数据处理方法以及数据处理装置 | |
CN107463332B (zh) | 一种文件分割方法及装置 | |
CN111723058A (zh) | 一种预读数据缓存方法、装置、设备及存储介质 | |
CN110910249B (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN113535226B (zh) | 应用下载方法、终端、服务器、计算机设备以及存储介质 | |
CN111857850B (zh) | 过滤器的初始化方法、电子设备及存储介质 | |
CN108776665B (zh) | 一种数据处理方法及装置 | |
CN117313166A (zh) | 一种数据填充方法、装置、计算机设备及存储介质 | |
US10970206B2 (en) | Flash data compression decompression method and apparatus | |
CN110941597B (zh) | 解压缩文件的清理方法、装置、计算设备及计算机存储介质 | |
CN115951845A (zh) | 一种磁盘管理方法、装置、设备及存储介质 | |
CN108062224B (zh) | 基于文件句柄的数据读写方法、装置及计算设备 | |
CN106990938B (zh) | 随机数获取方法、装置及电子设备 | |
CN110555158A (zh) | 互斥数据处理方法及系统、计算机可读存储介质 | |
CN115858256A (zh) | 一种物联网设备的测试方法、装置及电子设备 | |
CN113407562A (zh) | 分布式数据库系统的通信方法及装置 | |
CN108664414B (zh) | Ddr内存配置空间访问方法及装置 | |
CN112541041A (zh) | 一种数据处理方法、装置、服务器及存储介质 | |
CN112565479A (zh) | 设备id的动态生成方法、系统、计算机设备及存储介质 | |
CN113849131B (zh) | 一种数据存储方法、装置、计算设备和存储介质 | |
CN111352825A (zh) | 数据接口的测试方法、装置及服务器 | |
CN112306402B (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 |