教程 > Redis教程 > Redis 命令 阅读:21

Redis HyperLogLog

Redis HyperLogLog


Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

HyperLogLog是一种概率数据结构,用于对唯一事物进行计数(从技术上讲,这是指估计集合的基数)。通常,对唯一项目进行计数需要使用与要计数的项目数量成比例的内存量,因为您需要记住过去已经检索的元素,以避免多次对其进行计数。但是,有一组算法会以内存换取精度:我们最终会得到带有标准误差的估计量,在Redis实现中,该误差小于1%。该算法的神奇之处在于,我们不再需要使用与所计数项目数量成正比的内存量,而是可以使用恒定数量的内存!在最坏的情况下为12k字节,如果我们的HyperLogLog(从现在开始将它们称为HLL)看到的元素很少,则用到的内存将更少。

什么是基数?

比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

示例

以下示例演示了 HyperLogLog 的工作过程:

redis 127.0.0.1:6379> PFADD jiyikey "redis"
1) (integer) 1
redis 127.0.0.1:6379> PFADD jiyikey "mongodb"
1) (integer) 1
redis 127.0.0.1:6379> PFADD jiyikey "mysql"
1) (integer) 1
redis 127.0.0.1:6379> PFCOUNT jiyikey
(integer) 3

Redis HyperLogLog 命令


下表列出了 redis HyperLogLog 的基本命令:

序号 命令 说明
1 PFADD key element [element ...] 添加指定元素到 HyperLogLog 中
2 PFCOUNT key [key ...] 返回给定 HyperLogLog 的基数估算值
3 PFMERGE destkey sourcekey [sourcekey ...] 将多个 HyperLogLog 合并为一个 HyperLogLog

查看笔记

扫码一下
查看教程更方便