参见插入

语法
CF.INSERTNX key [CAPACITY capacity] [NOCREATE] ITEMS item [item ...]
可用:
Redis 堆栈 / Bloom 1.0.0
时间复杂度:
O(n * (k + i)),其中 n 是项数,k 是子筛选器数,i 是 maxIterations

将一个或多个项目添加到 cuckoo 筛选器(如果它们以前不存在),从而允许使用自定义容量创建筛选器(如果该筛选器尚不存在)。

此命令类似于CF.ADDNX,但可以添加多个项目并且可以指定容量。

笔记:

  • 此命令比CF.INSERT,因为它首先检查每个项目是否存在。
  • 因为CF.EXISTS可能导致误报、CF.INSERTNX可能不会添加项目,因为它应该已经存在,这可能是错误的。

必需参数

key

是 Cuckoo 过滤器向其添加项目的键名称。

如果key不存在 - 创建新的 Cuckoo 过滤器。

ITEMS item...

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

可选参数

CAPACITY capacity

指定新筛选器的所需容量(如果此筛选器尚不存在)。

如果过滤器已存在,则忽略此参数。

如果过滤器尚不存在且指定此参数,则使用模块级默认容量(即 1024)创建过滤器。

CF.RESERVE有关 Cuckoo 过滤器容量的更多信息。

NOCREATE

如果指定,则在过滤器不存在时阻止自动创建过滤器(而是返回错误)。

此选项与CAPACITY.

返回值

返回以下回复之一:

  • Integer reply数组 reply,其中0表示项目的指纹已存在于过滤器中,1表示项目已成功添加到过滤器中,并且-1表示由于筛选器已满,因此未添加该项目。
  • [] 时(参数无效、键类型错误等)以及NOCREATE指定key不存在。

复杂性

O(n + i) 的 ID 中,其中 n 是sub-filters而我是maxIterations. 添加项需要每个sub-filter. 但是,当筛选器填满时,项的两个位置可能已满。过滤器尝试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

RATE THIS PAGE
Back to top ↑