Redis6:第六章:(2)Redis6 新数据类型:HyperLogLog
一、HyperLogLog 简介
在工作当中,我们经常会遇到与统计相关的功能需求,比如统计网站PV(PageView页面访问量),可以使用Redis的incr、incrby轻松实现。
但像UV(UniqueVisitor,独立访客)、独立IP数、搜索记录数等需要去重和计数的问题如何解决?这种求集合中不重复元素个数的问题称为基数问题。
解决基数问题有很多种方案:
(1)数据存储在MySQL表中,使用distinct count计算不重复个数
(2)使用Redis提供的hash、set、bitmaps等数据结构来处理
以上的方案结果精确,但随着数据不断增加,导致占用空间越来越大,对于非常大的数据集是不切实际的。
能否能够降低一定的精度来平衡存储空间?Redis推出了HyperLogLog
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。
扩展:什么是基数?
比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。
二、命令
1、pfadd
(1)格式
pfadd <key>< element> [element ...] 添加指定元素到 HyperLogLog 中
(2)实例
将所有元素添加到指定HyperLogLog数据结构中。如果执行命令后HLL估计的近似基数发生变化,则返回1,否则返回0。
2、pfcount
(1)格式
pfcount<key> [key ...] 计算HLL的近似基数,可以计算多个HLL,比如用HLL存储每天的UV,计算一周的UV可以使用7天的UV合并计算即可
模拟计算一周的UV:
(2)实例
3、pfmerge
(1)格式
pfmerge<destkey><sourcekey> [sourcekey ...] 将一个或多个HLL合并后的结果存储在另一个HLL中,比如每月活跃用户可以使用每天的活跃用户来合并计算可得
(2)实例
Redis6:第六章:(2)Redis6 新数据类型:HyperLogLog相关推荐
- 第六章 电磁新理论(修补章)
第六章 电磁新理论(修补章) 关于麦克斯韦方程中的散度式的证明,网上资料很多,也较为简单.所以,本章只是对麦克斯韦方程中的旋度式做逻辑推导, ...
- Redis6通信协议升级至RESP3,一口气看完13种新数据类型
我们已经知道RESP V2版本协议的规范,RESP的全程是Redis Serialization Protocol,基于这个实现简单且解析性能优秀的通信协议,Redis的服务端与客户端可以通过底层命令 ...
- Redis6发布订阅及Redis新数据类型
Redis6 Redis的发布和订阅 什么是发布和订阅 Redis的发布和订阅 发布订阅命令行实现 Redis新数据类型 Bitmaps 常用命令 1.setbit 2.实例 3. getbit 4. ...
- Java基础学习——第十六章 Java8新特性
Java基础学习--第十六章 Java8 新特性 Java8(JDK8.0)较 JDK7.0 有很多变化或者说是优化,比如 interface 里可以有静态方法和默认方法,并且可以有方法体,这一点就颠 ...
- 第六章 电磁新理论
第六章 电磁新理论 声明 本人自称:三空道士.可看作是社会底层的无业游民,也无不妥.虽修行于俗世,甘于过平淡艰苦的隐居生活,但从 ...
- 【正点原子FPGA连载】第五十六章 双目OV5640摄像头HDMI显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 3)全套实验源码+手册+视频下载地址:ht ...
- 【正点原子FPGA连载】第四十六章SD卡读写测试实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...
- 人工智能:第六章 专家系统
第六章专家系统 教学内容:本章主要介绍专家系统的定义.结构.特点和类型,分析了基于规则的专家系统.基于框架的专家系统和基于模型的专家系统,归纳了协同式和分布式等新型专家系统,并结合实例介绍了专家系统的 ...
- C语言数据结构(大话数据结构——笔记4)第六章:树
文章目录 第六章:树(tree.root.subtree)(177) 树的定义(179) 结点分类(结点的度degree.叶结点leaf[终端结点].分支结点[非终端节点]{内部结点}.树的度)(18 ...
- 【译】 WebSocket 协议第六章——发送与接收消息(Sending and Receiving Data)
概述 本文为 WebSocket 协议的第六章,本文翻译的主要内容为 WebSocket 消息发送与接收相关内容. 发送与接收消息(协议正文) 6.1 发送数据 为了通过 WebSocket 连接发送 ...
最新文章
- mysql 新建库在哪找_求助,mysql创建数据库找不到文件在哪问题
- neo4j 机器学习_neo4j(图数据库)是什么?
- 微信公众平台开发环境搭建
- 【编程6】贪吃蛇游戏(python+pygame)
- VTK:可视化之DrawText
- java随机数生成(固定位数)
- opencv中 .at<uchar>()和.ptr<uchar>()使用方法的区别
- python编程(fabric部署)
- resetlog oracle,用RMAN的全备恢复resetlog之前的数据
- 使c语言程序变成流程图的软件6,下载_AutoFlowchart(C语言流程图生成器) V3.5.3 英文版_6z6z下载站...
- java 生成 流程图_几行代码生成流程图
- 整理12种电脑有趣屏保
- VMware增强型键盘驱动程序
- matlab量化股票基本面,获取数据 - MATLAB - 掘金量化
- 推荐几款不错的企业网站,前端设计师寻求设计灵感!
- 多边形的定义为什么要强调封闭图形_多边形的定义及其定理
- Web基础知识与常用技术
- 【圣诞快乐】闻到圣诞的气息了,喜欢的节日在慢慢来临~祝大家Merry Christmas。
- 函数(python)
- 最大流——最大传输量
热门文章
- ITSM基础框架开发维护指南
- R语言:基本变量及其之间关系探索分析
- 海量数据荣获华为“中国政企数据存储优秀合作伙伴”金奖
- 黑暗城堡(dijkstra算法)
- Linux命令之杀掉被占用的端口号
- linux xsh加密传输,WBB - 解决Xshell迁移/同步xsh文件时,ssh秘钥密码/密码丢失问题...
- Macintosh30周年回顾视频 ---转自36kr
- 模型调参(二):learning rate decay(学习率衰减)【使用库调整学习率:等间隔、多间隔、指数衰减、余弦退火函数、根据指标、自定义】【手动调整学习率】
- 网站打开速度过慢时该怎么提高?
- 计算机网络的雏形为,计算机网络的发展雏形是什么