hyperloglog
redis hyperloglog是一种使用随机算法的算法,目的是仅使用一个常量和少量的内存就可以估算一组集合中唯一元素的数量。hyperloglog可以很好地近似集合的基数,即使使用很少的内存(每个key大约12 kb),标准误差为0.81%。可以计数的项目数没有限制,除非您要处理2 64个项目。
什么是基数?
比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。
例如:以下示例说明了redis hyperloglog的工作方式。
redis 127.0.0.1:6379> pfadd tutorials "redis"
1) (integer) 1
redis 127.0.0.1:6379> pfadd tutorials "mongodb"
1) (integer) 1
redis 127.0.0.1:6379> pfadd tutorials "mysql"
1) (integer) 1
redis 127.0.0.1:6379> pfcount tutorials
(integer) 3
redis hyperloglog命令
下表列出了与redis hyperloglog相关的一些基本命令。
命令 | 描述 |
---|---|
pfadd key element [element ...] | 将指定的元素添加到指定的hyperloglog。 |
pfcount key [key ...] | 返回由hyperloglog在键处观察到的集合的近似基数。 |
pfmerge destkey sourcekey [sourcekey ...] | 将n个不同的hyperloglog合并为一个。 |