BF.INSERT

Syntax
BF.INSERT key [CAPACITY capacity] [ERROR error]
  [EXPANSION expansion] [NOCREATE] [NONSCALING] ITEMS item [item
  ...]
Available in:
Redis Stack / Bloom 1.0.0
Time complexity:
O(k * n), where k is the number of hash functions and n is the number of items

如果key不存在,则使用指定的错误率、容量和扩展创建一个新的布隆过滤器,然后将所有指定的项添加到布隆过滤器中。

此命令类似于BF.MADD,不同之处在于可以指定错误率、容量和扩展。它是BF.RESERVEBF.MADD的糖衣组合。

必需的参数

key

是用于向布隆过滤器添加项的键名。

如果 key 不存在,则会创建一个新的布隆过滤器。

ITEMS item...

要添加的一个或多个项目。

可选参数

NOCREATE

表示如果过滤器尚不存在,则不应创建它。 如果过滤器尚不存在,将返回错误而不是自动创建它。 这可以用于需要严格区分过滤器创建和过滤器添加的情况。 同时指定NOCREATECAPACITYERROR是错误的。

CAPACITY capacity

指定要创建的过滤器的所需capacity。 如果过滤器已经存在,则忽略此参数。 如果过滤器是自动创建的且此参数缺失,则使用模块级别的capacity。 有关此值影响的更多信息,请参见BF.RESERVE

ERROR error

指定如果新创建的过滤器尚不存在时的error比率。 如果过滤器是自动创建的且未指定error,则使用模块级别的错误率。 有关此值格式的更多信息,请参见BF.RESERVE

NONSCALING

如果达到初始容量,防止过滤器创建额外的子过滤器。 非扩展过滤器比其扩展对应物需要稍少的内存。当达到capacity时,过滤器会返回错误。

EXPANSION expansion

当达到capacity时,会创建一个额外的子过滤器。 新子过滤器的大小是最后一个子过滤器的大小乘以expansion,指定为正整数。

如果要存储在过滤器中的元素数量未知,请使用expansion2或更高以减少子过滤器的数量。 否则,使用expansion1以减少内存消耗。默认值为2

返回值

返回以下回复之一:

  • Array reply 其中每个元素是以下选项之一:
    • Integer reply,其中 1 表示项目已成功添加,0 表示该项目已添加到过滤器中(可能是错误的)
    • [] 当项目无法添加因为过滤器已满时
  • [],例如,当参数数量或键类型错误时,以及当指定了NOCREATEkey不存在时。

示例

向过滤器添加三个项目,如果过滤器尚不存在,则使用默认参数创建过滤器。

BF.INSERT filter ITEMS foo bar baz

向过滤器中添加一个项目,如果过滤器不存在,则创建一个容量为10000的过滤器。

BF.INSERT filter CAPACITY 10000 ITEMS hello

向过滤器添加两个项目,如果过滤器不存在则返回错误。

BF.INSERT filter NOCREATE ITEMS foo bar

RATE THIS PAGE
Back to top ↑