CF.INSERTNX
语法
CF.INSERTNX key [CAPACITY capacity] [NOCREATE] ITEMS item [item ...]
- 可用性
- Redis Stack / Bloom 1.0.0
- 时间复杂度
- O(n * (k + i)),其中 n 是项目数量,k 是子过滤器数量,i 是 maxIterations
如果项目之前不存在,则将一个或多个项目添加到布隆过滤器中,允许在过滤器尚不存在的情况下以自定义容量创建过滤器。
此命令类似于 CF.ADDNX
,但可以添加多个项目,并且可以指定容量。
必需参数
key
是要添加项目的布隆过滤器的键名。
如果 key
不存在,则会创建一个新的布隆过滤器。
ITEMS item...
要添加的一个或多个项目。
可选参数
CAPACITY capacity
指定新过滤器的所需容量,如果此过滤器尚不存在。
如果过滤器已经存在,则此参数将被忽略。
如果过滤器尚不存在并且未指定此参数,则过滤器将以模块级默认容量创建,该容量为 1024。
有关布隆过滤器容量的更多信息,请参阅 CF.RESERVE
。
NOCREATE
如果指定,则阻止在过滤器不存在时自动创建过滤器(而是返回错误)。
此选项与 CAPACITY
互斥。
返回值
返回以下回复之一
- 数组回复 的 整数回复,其中
0
表示项目的指纹已存在于过滤器中,1
表示项目已成功添加到过滤器中,-1
表示项目未添加因为过滤器已满。 - [] 错误时(无效参数、错误的键类型等)以及在指定
NOCREATE
并且key
不存在时。
复杂度
O(n + i),其中 n 是 子过滤器
数量,i 是 maxIterations
。添加项目需要每个 子过滤器
最多 2 次内存访问。但随着过滤器的填充,项目的两个位置都可能已满。过滤器尝试将项目 Cuckoo
交换多达 maxIterations
次。
示例
redis> CF.INSERTNX cf CAPACITY 1000 ITEMS item1 item2
1) (integer) 1
2) (integer) 1
redis> CF.INSERTNX cf CAPACITY 1000 ITEMS item1 item2 item3
1) (integer) 0
2) (integer) 0
3) (integer) 1
redis> CF.INSERTNX cf_new CAPACITY 1000 NOCREATE ITEMS item1 item2
(error) ERR not found