BF.INSERT

语法
BF.INSERT key [CAPACITY capacity] [ERROR error]
  [EXPANSION expansion] [NOCREATE] [NONSCALING] ITEMS item [item
  ...]
可用在
Redis Stack / Bloom 1.0.0
时间复杂度
O(k * n),其中 k 是哈希函数的数量,n 是项的数量

如果 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

返回值

返回以下答复之一

  • 数组回复,其中每个元素都是以下选项之一
    • 整数回复,其中 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 ↑