语法

1
PFADD key [element [element ...]]

可用版本

≥ 2.8.9

时间复杂度

每添加一个元素的复杂度为 $O(1)$

ACL类别

@write@hyperloglog@fast

将所有的元素参数添加到 HyperLogLog 数据结构中,存储在作为第一个参数指定的变量名称中。

作为这个命令的副作用,在执行此命令时,HyperLogLog 内部可能会更新,以反映截至目前为止添加的唯一项目数的不同近似值(集合的基数)。

如果 HyperLogLog 估计的近似基数在执行命令后发生变化,PFADD 将返回 1,否则返回 0。如果指定的键不存在,该命令将自动创建一个空的 HyperLogLog 结构(即具有指定长度和给定编码的 Redis 字符串)。

在调用命令时,如果不传递元素,而只有有效的 key 名称,那么如果 key 已经存在则不执行任何操作,否则只创建数据结构(在后一种情况下会返回 1)。

有关 HyperLogLog 数据结构的更多信息,请参阅 PFCOUNT 命令文档。

返回值

返回一个整数,如果 HyperLogLog 内部存储被修改了,则返回 1。 否则返回 0。

示例 1

1
2
3
4
redis> PFADD hll J O H N S O N L I N
(integer) 1
redis> PFCOUNT hll
(integer) 7

示例 2

执行 PFADD 命令时,只传 key 名称,而不传递元素,key 不存在的情况,该命令执行结果返回 1:

1
2
3
4
redis> EXISTS hkey
(integer) 0
redis> PFADD hkey
(integer) 1

示例 3

执行 PFADD 命令时,只传 key 名称,而不传递元素,key 存在的情况,该命令执行结果返回 0:

1
2
3
4
redis> EXISTS hkey
(integer) 1
redis> PFADD hkey
(integer) 0

(END)