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.RESERVE
和 BF.MADD
的组合。
必需参数
key
是用于添加项的布隆过滤器的键名。
如果 key
不存在,则创建一个新的布隆过滤器。
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
。
返回值
返回以下答复之一
- 数组回复,其中每个元素都是以下选项之一
- 整数回复,其中
1
表示已成功添加该项,而0
表示该项已添加到过滤器中(可能错误)。 - [] 当无法添加该项因为过滤器已满时
- 整数回复,其中
- [],例如,当参数或键类型数量错误时,以及当指定
NOCREATE
且key
不存在时。
示例
将三项添加到过滤器中,然后使用默认参数创建过滤器(如果尚未存在)。
BF.INSERT filter ITEMS foo bar baz
将一项添加到过滤器中,然后创建容量为 10000 的过滤器(如果尚未存在)。
BF.INSERT filter CAPACITY 10000 ITEMS hello
将两项添加到过滤器中,然后如果过滤器尚未存在则返回错误。
BF.INSERT filter NOCREATE ITEMS foo bar