记录下bitmap的两个应用场景,bitmap的用法,set key offset value。
1、统计单日用户活跃数数
假设 2020-10-13,有用户id为123456,123457,123458的用户登陆
假设 2020-10-14,有用户id为123456的用户登陆
bitset 20201013 123456 1
bitset 20201013 123457 1
bitset 20201013 123458 1
bitset 20201014 123456 1
统计20201013 这天有多少人登陆:
bitcount 20201013
统计2020-10-13到2020-10-14这两天有多少人登陆
bittop or res 20201013 20201014
bitcount res 0 -1
2、统计一个用户的登陆情况
假设 2020-10-13,有用户id为123456登陆了
假设 2020-10-14,有用户id为123456登陆了
bitset 123456 20201013 1
bitset 123456 20201014 1
统计 123456的登陆天数:
bitcount 123456 或这 bitcount 123456 20200101 20201230
3、关于区间内连续登陆问题,比如统计123456从20201001 到20201007是不是连续7天登陆
可以这么设计,offset代表第1天,第2天..
bitset 123456 1 1
bitset 123456 2 1
判断是不是连续7天登陆
getbit 123456拿到值和11111110做与运算或异或运算
这样设计就要单独创建数据空间,不能用到上面第二种的这种数据bitset 123456 20201013 1,很可惜没有支持这种api,getbit key start end。