redis:HyperLogLog(概念、命令)

时间:2020-07-12
本文章向大家介绍redis:HyperLogLog(概念、命令),主要包括redis:HyperLogLog(概念、命令)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、概念

(1)概念

  • 用来做基数统计的算法,在输入的元素的数量或者体积非常大的时候,计算基数所需的空间总是固定的,并且是很小的
  • 每一个HyperLogLog只需要花费12KB的内存就可以计算接近2的64次方不同元素的基数
  • 因为HyperLogLog只会根据输入的元素来计算基数,而不会存储输入元素本身,所以,HyperLogLog不能像集合那样,返回输入的各个元素
  • 基数不存在重复的元素,例如:{1,3,4,5,6,6,7,8,9,9}的基数集为{1,3,4,5,6,7,8,9},基数为5,基数估计就是在误差可接受的范围内快速计算基数,但是该误差是在误差允许的范围内

(2)应用

  • 基数不大、数据量不到的时候就没必要用基数
  • 只能统计基数数量,不能获取具体内容,即:不能存储数据
  • 统计每一个用户点击博客的次数,只会计数一次,点击完第一次后,不会再随点击次数的增加而增加访问量

2、命令

(1)添加指定元素到HyperLogLog中

127.0.0.1:6379> pfadd p1 1 2 3 4 5 6 7  8 9 10 12 22 3 3 455 76 7 788 
(integer) 1

(2)返回HyperLogLog的基数估计值

127.0.0.1:6379> pfadd p1 1 2 3 4 5 6 7  8 9 10 12 22 3 3 455 76 7 788 
(integer) 1
127.0.0.1:6379> pfcount p1
(integer) 15

祛除重复的元素,一共有15个不重复的元素

(3)合并

127.0.0.1:6379> pfadd p1 1 2 3 4 5 6 7  8 9 10 12 22 3 3 455 76 7 788 
(integer) 1
127.0.0.1:6379> pfcount p1
(integer) 15
127.0.0.1:6379> pfadd p2 1 2 3 4 5 6 7 8 9 10
(integer) 1
127.0.0.1:6379> pfmerge p4 p2 p1
OK
127.0.0.1:6379> pfcount p4
(integer) 15

将p1和p2的基数集合并为p4基数集,并求出p4的基数

原文地址:https://www.cnblogs.com/zhai1997/p/13287295.html