Redis 教程
1. Redis 教程 2. Redis 简介 3. Redis 安装 4. Redis 配置 5. Redis 数据类型 6. Redis 命令 7. Redis 键(key) 8. Redis 字符串(String) 9. Redis 哈希(Hash) 10. Redis 列表(List) 11. Redis 集合(Set) 12. Redis 有序集合(sorted set) 13. Redis HyperLogLog 14. Redis 发布订阅 15. Redis 事务 16. Redis 脚本 17. Redis 连接 18. Redis 服务器 19. Redis 数据备份与恢复 20. Redis 安全 21. Redis 性能测试 22. Redis 客户端连接 23. Redis 管道技术 24. Redis 分区 25. Java 使用 Redis 26. PHP 使用 Redis

Redis HyperLogLog

Redis HyperLogLog

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

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。


什么是基数?

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


实例

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


redis 127.0.0.1:6379> PFADD key "redis"



1) (integer) 1



redis 127.0.0.1:6379> PFADD key "mongodb"



1) (integer) 1



redis 127.0.0.1:6379> PFADD key "mysql"



1) (integer) 1



redis 127.0.0.1:6379> PFCOUNT key



(integer) 3


Redis HyperLogLog 命令

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

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