BF.INSERT

语法
BF.INSERT key [CAPACITY capacity] [ERROR error]
  [EXPANSION expansion] [NOCREATE] [NONSCALING] ITEMS item [item
  ...]
适用于
Redis 开源版 / Bloom 1.0.0
时间复杂度
O(k * n),其中 k 是哈希函数的数量,n 是元素的数量
ACL 分类
@bloom, @write, @slow,

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

评价此页面
返回顶部 ↑
© . This site is unofficial and not affiliated with Redis, Inc.