【redis】三大特殊类型:hyperloglogs 基数统计 [ 编程杂谈 ]
大数据男孩 文章 正文
明妃
{{nature("2022-08-14 17:23:19")}}更新说明
说明是基数
数据集:{1,1,2,6,7,8,9}
那么这个数据的基数集
为: {1,2,6,7,8,9}
基数(不重复的数)为:6
hyperloglogs 优势
- 在输入元素的数量或者体积
非常非常大
时,计算基数所需的空间总是固定
的、并且是很小的
。 - 每个 HyperLogLog 键只需要花费
12 KB
内存,就可以计算接近2^64
个不同元素
的基数。
使用
添加元素
pfadd k element [element ...]
127.0.0.1:6379> PFADD k a b c d d
(integer) 1
统计基数
pfcount k key [key ...]
127.0.0.1:6379> pfcount k
(integer) 4
合并多个 HyperLogLog
pfmerge destkey sourcekey [sourcekey ...]
- destkey:合并结果保存的 HyperLogLog 集
127.0.0.1:6379> pfadd kk a s d f g g
(integer) 1
127.0.0.1:6379> pfmerge key kk k
OK
127.0.0.1:6379> pfcount key
(integer) 7
使用场景
网页的UV统计
传统的方式,set 存储用户的id,然后取统计元素的数量,如果这种方式要保存大量的用户id,就很麻烦。统计UV是为了计数,而不是保存用户id
{{nature('2020-01-02 16:47:07')}} {{format('12641')}}人已阅读
{{nature('2019-12-11 20:43:10')}} {{format('9527')}}人已阅读
{{nature('2019-12-26 17:20:52')}} {{format('7573')}}人已阅读
{{nature('2019-12-26 16:03:55')}} {{format('5017')}}人已阅读
目录
标签云
一言
评论 0
{{userInfo.data?.nickname}}
{{userInfo.data?.email}}