高炉。插入
BF.INSERT key [CAPACITY capacity] [ERROR error] [EXPANSION expansion] [NOCREATE] [NONSCALING] ITEMS item [item ...]
- 可用:
- Redis 堆栈 / Bloom 1.0.0
- 时间复杂度:
- O(k * n),其中 k 是哈希函数的数量,n 是项目的数量
如果key
不存在,然后将所有指定的项目添加到 Bloom Filter。
此命令类似于BF.MADD
,但可以指定错误率、容量和扩展。它是BF.RESERVE
和BF.MADD
.
必需参数
key
是要向其添加项目的 Bloom 过滤器的键名称。
如果key
不存在,则会创建一个新的 Bloom 过滤器。
ITEMS item...
要添加的一个或多个项目。
可选参数
NOCREATE
指示如果过滤器尚不存在,则不应创建该过滤器。
如果过滤器尚不存在,则返回错误,而不是自动创建它。
这可用于需要严格区分过滤器创建和添加过滤器的情况。
指定NOCREATE
与CAPACITY
或ERROR
.
CAPACITY capacity
指定所需的capacity
以获取要创建的筛选器。
如果过滤器已存在,则忽略此参数。
如果过滤器是自动创建的并且此参数不存在,则模块级capacity
被使用。
看BF.RESERVE
有关此值的影响的更多信息。
ERROR error
指定error
比率(如果尚不存在)。
如果过滤器是自动创建的,并且error
未指定,则使用模块级错误率。
看BF.RESERVE
,了解有关此值的格式的更多信息。
NONSCALING
防止过滤器在达到初始容量时创建其他子过滤器。
非缩放筛选器需要的内存略低于其缩放筛选器。在以下情况下,过滤器将返回错误capacity
到达。
EXPANSION expansion
什么时候capacity
,则会创建一个额外的子过滤器。
新子过滤器的大小等于最后一个子过滤器的大小乘以expansion
,指定为正整数。
如果要存储在过滤器中的元素数量未知,请使用expansion
之2
或更多以减少子过滤器的数量。
否则,请使用expansion
之1
以减少内存消耗。默认值为2
.
返回值
返回以下回复之一:
- Array 回复,其中每个元素是以下选项之一:
- Integer 回复,其中
1
表示项目添加成功,而0
表示此类项目已添加到过滤器中(这可能是错误的) - [] 由于筛选器已满而无法添加项目
- Integer 回复,其中
- [],例如,当参数或键类型的数量错误时,以及当
NOCREATE
指定key
不存在。
例子
向过滤器添加三个项目,然后使用 default 参数创建过滤器(如果尚不存在)。
BF.INSERT filter ITEMS foo bar baz
Add one item to a filter, then create the filter with a capacity of 10000 if it does not already exist.
BF.INSERT filter CAPACITY 10000 ITEMS hello
Add two items to a filter, then return error if the filter does not already exist.
BF.INSERT filter NOCREATE ITEMS foo bar