玩转Redis-HyperLogLog统计微博日活月活

本文介绍了使用Redis的HyperLogLog数据结构来解决日活月活统计的挑战,对比了Bitmaps和HyperLogLog的优缺点,并详细讲解了HyperLogLog的使用方法和应用场景,如网站日活、月活、UV统计。
摘要由CSDN通过智能技术生成

《玩转Redis》系列文章主要讲述Redis的基础及中高级应用。本文是《玩转Redis》系列第【9】篇,最新系列文章请前往公众号“zxiaofan”查看,或百度搜索“玩转Redis zxiaofan”即可。

本文关键字:玩转Redis、微博日活/月活、UV统计、HyperLogLog;

大纲

  • 日活数据统计面临哪些挑战
    • Bitmaps可用于统计日活吗?
    • 日活数据统计的特点
  • HyperLogLog介绍
    • HyperLogLog必知
    • HyperLogLog和Sets的区别
  • HyperLogLog如何使用
    • HyperLogLog命令对比分析
    • HyperLogLog命令详解
    • HyperLogLog命令注意事项
    • HyperLogLog命令示例
  • HyperLogLog的应用场景

名词解释

  • DAU(Daily Active User)日活跃用户数量
    常用于反映网站、互联网应用或网络游戏的运营情况。DAU通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户);
  • 月活跃用户数量(Monthly Active User,MAU)
    月活跃用户数量通常统计一个月(统计月)之内,登录或使用了某个产品的用户数(去除重复登录的用户);
  • Note:日活、月活反映用户的活跃度,但是无法反映用户的粘性。

1. 日活数据统计面临哪些挑战

  2020年2月26日,微博发布2019年第四季度及全年财报。数据显示,截至2019年底,微博月活跃用户达到5.16亿,相比2018年年底净增长约5400万,其中移动端占比94%。2019年微博全年营收提升至122.4亿元,其中广告营收达到106亿元。

1.1. Bitmaps可用于统计日活吗?

  前文《玩转Redis-京东签到领京豆如何实现》提到了 Bitmaps 在大数据下的应用,那么Bitmaps可以用于统计日活数据吗?我们来做个计算分析(以一亿用户为例):

统计方式 占用计算 1亿用户占用空间(M)
MySQL 32bit的int数据类型 1个int所需存储空间为4字节,可存储32 bit位 10^8 / (1024 * 1024 * 8 / 32) ≈ 381 M
Redis Bitmaps Bitmaps单个支持512M,不像int单个仅存储32位 10^8 / (1024 * 1024 * 8) ≈ 12M

使用Bitmaps计算日活月活:

  • 计算日活:bitcount key获取key为1的数量;
  • 计算月活:可把30天的所有bitmap做or计算,再进行bitcount计算;
  • 计算留存率:昨日留存=昨天今天连续登录的人数/昨天登录的人数,即昨天的bitmap与今天的bitmap进行and计算,再除以昨天bitcount的数量。

  通过以上计算,我们发现Bitmaps已经很节省空间了。统计一个网站的日活已不在话下,但是大型互联网公司除了日活,还有UV、PV等等需要统计。面对上千甚至更多的需统计模块,1个模块1天需要12M,一年就需要12M * 365 / 1024 ≈ 4.3G ,1000个模块一年就需要 12M * 365 / 1024 / 1024 ≈ 4.2T。So 革命尚未成功,我们还需再节省点!

1.2. 日活数据统计的特点

  • 数据需要去重;
  • 数据允许有一定的偏差,101W和102W差距不大;
  • 占用空间尽可能小;

2. HyperLogLog介绍

2.1. HyperLogLog必知

  HyperLogLog(HLL)是一种用于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值