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 |