Redis(十):Redis特殊类型之Hyperloglog基数统计
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基数统计相关推荐
- Redis三种特殊数据类型(Geospatial地理位置详解,Hyperloglog基数统计,Bitmap位图场景详解)
学习总结,转自[狂神说Java]Redis最新超详细版教程通俗易懂_哔哩哔哩_bilibili 1.Geospatial 地理位置 Geospatial : 使用场景 :朋友的定位,方圆几公里得人(附 ...
- Redis(十)——HyperLogLog 基数统计和 Bitmap位图场景详解
文章目录 Redis(十)--HyperLogLog 基数统计和 Bitmap位图场景详解 1.HyperLogLog 基数统计 2.Bitmap位图场景详解 Redis(十)--HyperLogLo ...
- Redis之三大特殊数据类型相关知识(Geospatial地理位置、Hyperloglog基数、Bitmaps位存储)
Redis之三大特殊数据类型 一.Geospatial地理位置 1.介绍 2.相关shell命令 2.1 规则 2.2 geoadd命令(给城市赋值) 2.3 geopos命令(获取指定城市的经度和纬 ...
- Redis三种特殊类型
文章目录 geospatial 地理空间 geoadd 添加地理位置 geopos geodist geohash georadius georadiusbymember geo底层 hyperlog ...
- Redis 特殊数据类型 :Geospatial、Hyperloglog、Bitmap
文章目录 Geospatial(地理空间) 介绍 用法 Hyperloglog(基数统计) 介绍 用法 Bitmap(位图) 介绍 用法 Geospatial(地理空间) 在使用一些小程序的时候,里面 ...
- 十五、Redis三种特殊类型之二HyperLoglog
一.概念 1.redis在2.8.9版本添加了HyperLogLog结构;HyperLogLog是一种算法,并非redis独有. 2.redis HyperLogLog是用来做基数统计的算法,Hype ...
- Redis修行 — 基数统计:HyperLogLog
学 无 止 境 ,与 君 共 勉 . 简介 HyperLogLog是Redis中的高级数据结构,它主要用于对海量数据(可以统计2^64个数据)做基数统计(去重统计数量).它的特点是速度快,占用空间小( ...
- 十六、Redis三种特殊类型之三Bitmap
一.BitMap是什么 通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身,value对应0或1,我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存 ...
- Redis高级数据结构原理解析-bitmap,hyperloglog
Redis 位图 开发过程中,我们可能遇到这种场景记录用户的打卡情况,签到情况,这些场景只有两种结果,有或者没有,加入记录的数据量比较大,比如用一年的数据,如果用Redis中普通key/value,每 ...
最新文章
- 广义互相关计算TDOA
- plot与legend画图与图例
- php 使用redis锁限制并发访问类
- java中常用的并发工具类
- Java编程基础阶段笔记 day04 Java基础语法(下)
- Google第一女神李飞飞,从洗碗工蜕变成为首席科学家
- [html] 列举几种瀑布流布局的方法
- canvas笔记-clip裁剪函数的使用及探照灯实例
- Flink UI: Flink 1.10 如何查看 数据源 的背压(反压)情况(消费kafka)
- win11虚拟内存如何设置 Windows11设置虚拟内存的步骤方法
- HotSpot虚拟机的垃圾收集算法实现
- 【python--爬虫】守望先锋英雄介绍视频爬虫
- tilera netlib应用层协议栈-IP层实现方式
- XZ_iOS 之开发者账号续费 你的支付授权失败 请核对你的信息并重试 或尝试其他支付方式 请联系你的银行了解更多信息
- 7、面向对象设计:共性VS个性
- 批量清理Unity项目Library目录 降低项目空闲占用空间
- HTTP API接口设计规范
- matlab2012a到期重新激活
- WIN10升级后无线网卡被禁用解决办法
- “农业机械开发商”AMD的50年求生之路
热门文章
- greenplum配置高可用_高可用hadoop集群配置就收藏这一篇,动手搭建Hadoop(5)
- BugkuCTF-MISC题可爱的故事
- 计算机网络静态路由大作业 3地互联,计算机网络-静态路由配置
- mysql的存储过程放在哪里_mysql存储过程求解,错误在哪里?
- idhttp返回乱码_HTTP客户端POST方式中文编码(乱码)解决方案(转)
- java7最后战线_我的世界最后战线2.0整合包
- 苹果手机更改照片大小kb_苹果手机照片视频删除了怎样恢复?专业人士建议你这样做...
- 1445.32php,nginx实现mysql的负载均衡
- html图片平移,CSS3 按钮悬停时背景图片平移入场
- pil python 安装_20行Python代码给微信头像戴帽子