【死磕Redis系列】五、HyperLogLog

------------------------------------------------------------------------------------------------------慢慢来,一切都来得及


 

介绍

HyperLogLog 数据结构是 Redis 的高级数据结构,提供不精确的去重计数方案,虽然不精确但是也不是非常不精确,标准误差是 0.81%。这样的精确度可以统计 UV。

 

使用

HyperLogLog 提供了两个指令 pfadd pfcount,根据字面意义很好理解,一个是增加计数,一个是获取计数。pfadd 用法和 set 集合的 sadd 是一样的pfcount scard 用法是一样的,直接获取计数值。

HyperLogLog 除了上面的 pfadd pfcount 之外,还提供了第三个指令 pfmerge,用于将多个 pf 计数值累加在一起形成一个新的 pf 值。比如在网站中我们有两个内容差不多的页面,运营说需要这两个页面的数据进行合并。其中页面的 UV 访问量也需要合并,那这个时候 pfmerge 就可以派上用场了。

 

HyperLogLog 这个数据结构需要占据一定12k 的存储空间。Redis 对 HyperLogLog 的存储进行了优化,在计数比较小时,它的存储空间采用稀疏矩阵存储,空间占用很小,仅仅在计数慢慢变大,稀疏矩阵占用空间渐渐超过了阈值时才会一次性转变成稠密矩阵,才会占用 12k 的空间。
 

 

发布了22 篇原创文章 · 获赞 10 · 访问量 6125

猜你喜欢

转载自blog.csdn.net/qq_28681387/article/details/105490457