# Cf命令

# CF.ADD

# 语法

CF.ADD key item

# 描述

向布谷鸟过滤器中添加一个元素。布谷鸟过滤器允许同一个元素存在多次,并且会把每次添加都视为独立的记录。如果只想在元素不存在时才进行添加,请使用 CF.ADDNX 命令

# 参数

  • key

键名

  • item

需要添加的元素

# 示例

> CF.ADD cf item1
(integer) 1
> CF.ADD cf item1
(integer) 1

# CF.ADDNX

# 语法

CF.ADDNX key item

# 描述

CLIENT GETNAME 命令会返回当前连接的名称,这个名称是通过 CLIENT SETNAME 命令设置的。因为每个新建立的连接默认都没有关联的名称,所以如果没有分配过名称,该命令将返回nil

# 参数

  • key

键名

  • item

需要添加的元素

# 示例

> CF.ADDNX cf item
(integer) 1
> CF.ADDNX cf item

# CF.COUNT

# 语法

CF.COUNT key item

# 描述

返回给定元素被添加到布谷鸟过滤器中的次数的估算值

# 参数

  • key

键名

  • item

需要添加的元素

# 示例

> CF.INSERT cf ITEMS item1 item2 item2
1) (integer) 1
2) (integer) 1
3) (integer) 1
> CF.COUNT cf item1
(integer) 1
> CF.COUNT cf item2
(integer) 2

# CF.DEL

# 语法

CF.DEL key item

# 描述

从过滤器中删除一次该元素。如果该元素仅存在一次,它将被彻底移除;如果该元素被添加了多次,它仍会保留在过滤器中

# 参数

  • key

键名

  • item

需要添加的元素

# 示例

> CF.INSERT cf ITEMS item1 item2 item2
1) (integer) 1
2) (integer) 1
3) (integer) 1
> CF.DEL cf item1
(integer) 1
> CF.DEL cf item1
(integer) 0
> CF.DEL cf item2
(integer) 1
> CF.DEL cf item2
(integer) 1
> CF.DEL cf item2
(integer) 0

# CF.EXISTS

# 语法

CF.EXISTS key item

# 描述

判断给定元素是否被添加到了布谷鸟过滤器中

# 参数

  • key

键名

  • item

需要添加的元素

# 示例

> CF.ADD cf item1
(integer) 1
> CF.EXISTS cf item1
(integer) 1
> CF.EXISTS cf item2
(integer) 0

# CF.INFO

# 语法

CF.INFO key

# 描述

返回关于布谷鸟过滤器(cuckoo filter)的相关信息

# 参数

  • key

键名

# 示例

> CF.INFO cf
 1) Size
 2) (integer) 1080
 3) Number of buckets
 4) (integer) 512
 5) Number of filter
 6) (integer) 1
 7) Number of items inserted
 8) (integer) 0
 9) Number of items deleted
10) (integer) 0
11) Bucket size
12) (integer) 2
13) Expansion rate
14) (integer) 1
15) Max iteration
16) (integer) 20

# CF.INSERT

# 语法

CF.INSERT key [CAPACITY capacity] [NOCREATE] ITEMS item [item ...]

# 描述

向布谷鸟过滤器中添加一个或多个元素。如果该过滤器尚不存在,则允许使用自定义容量来创建它

# 参数

  • key

键名

  • item

需要添加的元素

  • CAPACITY

指定新过滤器的预期容量。如果该过滤器尚不存在,系统将按此容量进行创建;如果过滤器已经存在,则忽略该参数。如果过滤器尚不存在且未指定该参数,系统将使用模块级别的默认容量(即 1024)来创建过滤器。关于布谷鸟过滤器容量的更多详细信息,请参阅 CF.RESERVE 命令

  • NOCREATE

如果指定了该选项,当过滤器不存在时,将阻止系统自动创建过滤器。此选项与 CAPACITY选项互斥

# 示例

> CF.INSERT cf CAPACITY 1000 ITEMS item1 item2 
1) (integer) 1
2) (integer) 1

> CF.INSERT cf1 CAPACITY 1000 NOCREATE ITEMS item1 item2 
(error) ERR not found

> CF.RESERVE cf2 2 BUCKETSIZE 1 EXPANSION 0
OK
redis> CF.INSERT cf2 ITEMS 1 1 1 1
1) (integer) 1
2) (integer) 1
3) (integer) -1
4) (integer) -1

# CF.INSERTNX

# 语法

CF.INSERTNX key [CAPACITY capacity] [NOCREATE] ITEMS item [item ...]

# 描述

如果元素之前不存在,则将其一个或多个添加到布谷鸟过滤器中;如果该过滤器尚未创建,则允许使用自定义容量来初始化它

# 参数

  • key

键名

  • item

需要添加的元素

  • CAPACITY

指定新过滤器的预期容量。如果该过滤器尚不存在,系统将按此容量进行创建;如果过滤器已经存在,则忽略该参数。如果过滤器尚不存在且未指定该参数,系统将使用模块级别的默认容量(即 1024)来创建过滤器。关于布谷鸟过滤器容量的更多详细信息,请参阅 CF.RESERVE 命令

  • NOCREATE

如果指定了该选项,当过滤器不存在时,将阻止系统自动创建过滤器。此选项与 CAPACITY选项互斥

# 示例

> CF.INSERTNX cf CAPACITY 1000 ITEMS item1 item2 
1) (integer) 1
2) (integer) 1

> CF.INSERTNX cf CAPACITY 1000 ITEMS item1 item2 item3
1) (integer) 0
2) (integer) 0
3) (integer) 1

> CF.INSERTNX cf_new CAPACITY 1000 NOCREATE ITEMS item1 item2 
(error) ERR not found

# CF.LOADCHUNK

# 语法

CF.LOADCHUNK key iterator data

# 描述

恢复先前使用 CF.SCANDUMP 命令保存的布谷鸟过滤器

# 参数

  • key

键名

  • interactor

与数据关联的迭代器值(由 CF.SCANDUMP 返回)

  • data

当前数据块(由 CF.SCANDUMP 返回)


# CF.MEXISTS

# 语法

CF.MEXISTS key item [item ...]

# 描述

判断是否有一个或多个元素被添加到了布谷鸟过滤器中

# 参数

  • key

键名

  • item

需要添加的元素

# 示例

> CF.INSERT cf ITEMS item1 item2
1) (integer) 1
2) (integer) 1
> CF.MEXISTS cf item1 item2 item3
1) (integer) 1
2) (integer) 1
3) (integer) 0


# CF.RESERVE

# 语法

CF.RESERVE key capacity [BUCKETSIZE bucketsize]
  [MAXITERATIONS maxiterations] [EXPANSION expansion]

# 描述

创建一个包含单个子过滤器的空布谷鸟过滤器,以支持初始指定的容量

# 参数

  • key

键名

  • item

需要添加的元素

  • CAPACITY

指定新过滤器的预期容量。如果该过滤器尚不存在,系统将按此容量进行创建;如果过滤器已经存在,则忽略该参数。如果过滤器尚不存在且未指定该参数,系统将使用模块级别的默认容量(即 1024)来创建过滤器。关于布谷鸟过滤器容量的更多详细信息,请参阅 CF.RESERVE 命令

  • **MAXITERATIONS **

在声明过滤器已满并创建新过滤器之前,尝试在桶之间交换元素的次数

  • **EXPANSION **

当创建新过滤器时,其大小等于当前过滤器的大小乘以扩展系数。expansion 是一个介于 0 到 32768 之间的整数,默认值为 1。该扩展系数会被向上取整为下一个 2^n 的数值

# 示例

> CF.RESERVE cf 1000
OK

> CF.RESERVE cf 1000
(error) ERR item exists

> CF.RESERVE cf_params 1000 BUCKETSIZE 8 MAXITERATIONS 20 EXPANSION 2
OK

# CF.SCANDUMP

# 语法

CF.SCANDUMP key iterator

# 描述

开始增量保存布谷鸟过滤器

# 参数

  • key

键名

  • interactor

与数据关联的迭代器值(由 CF.SCANDUMP 返回)

# 示例

> CF.RESERVE cf 8
OK
> CF.ADD cf item1
(integer) 1
> CF.SCANDUMP cf 0
1) (integer) 1
2) "\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14\x00\x01\x008\x9a\xe0\xd8\xc3\x7f\x00\x00"
> CF.SCANDUMP cf 1
1) (integer) 9
2) "\x00\x00\x00\x00\a\x00\x00\x00"
> CF.SCANDUMP cf 9
1) (integer) 0
2) (nil)
> DEL bf
(integer) 1
> CF.LOADCHUNK cf 1 "\x01\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14\x00\x01\x008\x9a\xe0\xd8\xc3\x7f\x00\x00"
OK
> CF.LOADCHUNK cf 9 "\x00\x00\x00\x00\a\x00\x00\x00"
OK
> CF.EXISTS cf item1
(integer) 1