redis 2.8.9版本就更新了Hyperloglog数据结构!
Hyperloglog:基数统计算法!0.81%的错误率,不过统计大量数据可以忽略!
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

1、什么是基数

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

2、Hyperloglog简介

Redis Hyperloglog 基数统计的算法!
比如在CSDN中一位用户访问多次,但是统计中依旧算作一个人
传统的方式是用set集合把每个人的id保存下来,然后统计元素数量,但是太费内存了,而目标是统计数量,如果还要浪费大量的空间,就很不划算!

优点:占用的内存是固定的,统计2^64这么大的基数,只占用12kb的内存,就很方便!

3、常用命令

127.0.0.1:6379> PFADD thekey1 a b c d e f g h i j k l m   //创建第一组元素
(integer) 1
127.0.0.1:6379> PFADD thekey2 n o p q r s t u v w x y z //创建第二组元素
(integer) 1
127.0.0.1:6379> PFCOUNT thekey1  //查询数量
(integer) 13
127.0.0.1:6379> PFCOUNT thekey2
(integer) 13
127.0.0.1:6379> PFMERGE thekey3 thekey1 thekey2 //合并两组
OK
127.0.0.1:6379> PFCOUNT thekey3
(integer) 25        //百分之零点八的误差出现了?

允许容错的话,可以使用Hyperloglog

Redis(十):Redis特殊类型之Hyperloglog基数统计相关推荐

  1. Redis三种特殊数据类型(Geospatial地理位置详解,Hyperloglog基数统计,Bitmap位图场景详解)

    学习总结,转自[狂神说Java]Redis最新超详细版教程通俗易懂_哔哩哔哩_bilibili 1.Geospatial 地理位置 Geospatial : 使用场景 :朋友的定位,方圆几公里得人(附 ...

  2. Redis(十)——HyperLogLog 基数统计和 Bitmap位图场景详解

    文章目录 Redis(十)--HyperLogLog 基数统计和 Bitmap位图场景详解 1.HyperLogLog 基数统计 2.Bitmap位图场景详解 Redis(十)--HyperLogLo ...

  3. Redis之三大特殊数据类型相关知识(Geospatial地理位置、Hyperloglog基数、Bitmaps位存储)

    Redis之三大特殊数据类型 一.Geospatial地理位置 1.介绍 2.相关shell命令 2.1 规则 2.2 geoadd命令(给城市赋值) 2.3 geopos命令(获取指定城市的经度和纬 ...

  4. Redis三种特殊类型

    文章目录 geospatial 地理空间 geoadd 添加地理位置 geopos geodist geohash georadius georadiusbymember geo底层 hyperlog ...

  5. Redis 特殊数据类型 :Geospatial、Hyperloglog、Bitmap

    文章目录 Geospatial(地理空间) 介绍 用法 Hyperloglog(基数统计) 介绍 用法 Bitmap(位图) 介绍 用法 Geospatial(地理空间) 在使用一些小程序的时候,里面 ...

  6. 十五、Redis三种特殊类型之二HyperLoglog

    一.概念 1.redis在2.8.9版本添加了HyperLogLog结构;HyperLogLog是一种算法,并非redis独有. 2.redis HyperLogLog是用来做基数统计的算法,Hype ...

  7. Redis修行 — 基数统计:HyperLogLog

    学 无 止 境 ,与 君 共 勉 . 简介 HyperLogLog是Redis中的高级数据结构,它主要用于对海量数据(可以统计2^64个数据)做基数统计(去重统计数量).它的特点是速度快,占用空间小( ...

  8. 十六、Redis三种特殊类型之三Bitmap

    一.BitMap是什么 通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身,value对应0或1,我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存 ...

  9. Redis高级数据结构原理解析-bitmap,hyperloglog

    Redis 位图 开发过程中,我们可能遇到这种场景记录用户的打卡情况,签到情况,这些场景只有两种结果,有或者没有,加入记录的数据量比较大,比如用一年的数据,如果用Redis中普通key/value,每 ...

最新文章

  1. 广义互相关计算TDOA
  2. plot与legend画图与图例
  3. php 使用redis锁限制并发访问类
  4. java中常用的并发工具类
  5. Java编程基础阶段笔记 day04 Java基础语法(下)
  6. Google第一女神李飞飞,从洗碗工蜕变成为首席科学家
  7. [html] 列举几种瀑布流布局的方法
  8. canvas笔记-clip裁剪函数的使用及探照灯实例
  9. Flink UI: Flink 1.10 如何查看 数据源 的背压(反压)情况(消费kafka)
  10. win11虚拟内存如何设置 Windows11设置虚拟内存的步骤方法
  11. HotSpot虚拟机的垃圾收集算法实现
  12. 【python--爬虫】守望先锋英雄介绍视频爬虫
  13. tilera netlib应用层协议栈-IP层实现方式
  14. XZ_iOS 之开发者账号续费 你的支付授权失败 请核对你的信息并重试 或尝试其他支付方式 请联系你的银行了解更多信息
  15. 7、面向对象设计:共性VS个性
  16. 批量清理Unity项目Library目录 降低项目空闲占用空间
  17. HTTP API接口设计规范
  18. matlab2012a到期重新激活
  19. WIN10升级后无线网卡被禁用解决办法
  20. “农业机械开发商”AMD的50年求生之路

热门文章

  1. greenplum配置高可用_高可用hadoop集群配置就收藏这一篇,动手搭建Hadoop(5)
  2. BugkuCTF-MISC题可爱的故事
  3. 计算机网络静态路由大作业 3地互联,计算机网络-静态路由配置
  4. mysql的存储过程放在哪里_mysql存储过程求解,错误在哪里?
  5. idhttp返回乱码_HTTP客户端POST方式中文编码(乱码)解决方案(转)
  6. java7最后战线_我的世界最后战线2.0整合包
  7. 苹果手机更改照片大小kb_苹果手机照片视频删除了怎样恢复?专业人士建议你这样做...
  8. 1445.32php,nginx实现mysql的负载均衡
  9. html图片平移,CSS3 按钮悬停时背景图片平移入场
  10. pil python 安装_20行Python代码给微信头像戴帽子