Bitmap 统计活跃用户
使用日期(精确到天)作为 key,然后用户 ID 为 offset,如果当日活跃过就设置为 1
比如
用户ID:2在20230801登录一次
SETBIT 20230801 2 1
用户ID:4在20230801登录一次
SETBIT 20230801 4 1
用户ID:2在20230802登录一次
SETBIT 20230802 2 1
| 0 | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| 20230801 | 0 | 0 | 1 | 0 | 1 |
| 20230802 | 0 | 0 | 1 | 0 | 0 |
| AND | 0 | 0 | 1 | 0 | 0 |
| OR | 0 | 0 | 1 | 0 | 1 |
📌AND、OR表示上面的数值进行与、或运算
- 20230801当天的登录用户数
BITCOUNT 20230801
- 统计20230801-20230802间,每天都在线的用户数
BITOP AND tempdest 20230801 20230802
BITCOUNT tempdest
- 统计202308-20230802间,登录过系统的用户数
BITOP OR tempdest 20230801 20230802
BITCOUNT tempdest
用户签到案例
每个用户创建一个位图的键,以某一天为基础,之后的天数距离这一天的天数为偏移量,
如果用户点击了签到,则设置对用的偏移位为1,原理同上
| 用户ID | 0(1号) | 1(2号) | 2(3号) | 3(4号) | 4(5号) |
|---|---|---|---|---|---|
| 2 | 0 | 0 | 1 | 0 | 1 |
| 3 | 0 | 0 | 1 | 0 | 0 |
| AND | 0 | 0 | 1 | 0 | 0 |
| OR | 0 | 0 | 1 | 0 | 1 |
本文介绍了如何使用Bitmap数据结构在IT系统中统计用户活跃度,通过SETBIT记录每日登录,BITCOUNT计算单日活跃用户,以及BITOP处理连续日期间的活跃用户情况。同时提及了用户签到功能的类似实现方法。
165

被折叠的 条评论
为什么被折叠?



