redis大数据统计

发布时间 2023-08-23 11:23:47作者: Pearl...T

一、大数据统计

1.1. 亿级系统中常见的四种统计

1.1.1 聚合统计

  • 统计多个集合元素的聚合结果,就是前面讲解过的交差并等集合统计
  • 交并差集和聚合函数的应用

1.2. 排序统计

问:抖音短视频最新评论留言的场景,请你设计一个展现列表。
答:在面对需要展示最新列表、排行榜等场景时如果数据更新频繁或者需要分页显示,建议使用ZSet

1.3. 二值统计

  • 集合元素的取值就只有0和1两种在钉钉上班签到打卡的场景中,我们只用记录有签到(1)或没签到(0)
  • 见bitmap

1.4. 基数统计

  • 指统计一个集合中不重复的元素个数
  • 见hyperloglog

1.2. hyperloglog

1.2.1 什么是UV

  • Unique Visitor,独立访客,一般理解为客户端IP
  • 需要去重考虑
  • 一个用户一天无论浏览了页面多少次,UV都是1

1.2.2 什么是PV

  • Page View,页面浏览量
  • 不用去重
  • 一个用户一天浏览了页面多少次,PV就是多少

1.2.3 什么是DAU

  • Daily Active User
  • 日活跃用户量 —— 登录或者使用了某个产品的用户数(去重复登录的用户)
  • 常用于反映网站、迈联网应用或者网络游戏的运营情况

1.2.4 什么是MAU

  • Monthly Active User
  • 月活跃用户量

1.2.5 统计需求

  • 很多计数类场景,比如每日注册 IP每日访问 IP 数、页面实时访问数 PV、访问用户数 UV等。
  • 因为主要的目标高效、巨量地进行计数,所以对存储的数据的内容并不太关心。也就是说它只能用于统计巨量数量,不太涉及具体的统计对象的内容和精准性。
  • 统计单日一个页面的访问量(PV),单次访问就算一次。
  • 统计单日一个页面的用户访问量(UV),即按照用户为维度计算,单个用户一天内多次访问也只算一次。
  • 多个key的合并统计,某个门户网站的所有模块的PV聚合统计就是整个网站的总PV。

1.2.6 HyperLogLog结构

去重复统计功能的基数估计算法
用于统计一个集合中不重复的元素个数,就是对集合去重复后剩余元素的计算

  • Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
  • 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数内存就越多的集合形成鲜明对比。这和计算基数时,元素越多耗费
  • 但是,因为 HyperLoaLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各元素。

1.2.7 HyperLogLog基本命令

命令 作用
pfadd key element ... 将所有元素添加到key中
pfcount key 统计key的估算值(不精确)
pgmerge new_key key1 key2 .. 合并key至新key

示例:

image