这里只是列举了一下如何实现和基础原理
Redis:二进制安全存储
优势:速度快、省空间
统计用户登录天数
基础原理
用SETBIT创建一个key1并赋值
SETBIT key1 0 1
SETBIT key1 3 1
SETBIT key1 8 1
SETBIT key1 15 1
STRLEN key1
用BITCOUNT统计key1中1出现的次数
BITCOUNT key1 0 0
BITCOUNT key1 0 1
BITCOUNT key1 1 1
实现:
可以将每一个key作为一个用户,然后每一个二进制位作为日期,用户登录时将对应日期的二进制位设置为1;如key1的二进制为:
10010000 10000001
则代表key1在第1、4、9、16天的时候有登录
BITCOUNT key1 0 0 结果为2则说明在1到8天的时候,key1的登录次数为2次;其他的以此类推。
(如果需要统计2到7天,可以先统计出1到8天的结果,然后再扣除第1天和第8天的结果;以及其他场景时,可根据具体的需求进行扣减或添加。)
统计活跃用户
基础原理
用SETBIT创建一个day1、day2并赋值
SETBIT day1 0 1
SETBIT day1 3 1
SETBIT day2 2 1
SETBIT day2 3 1
用BITOP将day1、day2进行或运算,将结果赋值给day,查询day中1出现的次数
BITOP or day day1 day2
STRLEN day
BITCOUNT day 0 -1
day1、day2、day的二进制为:
day1 10010000
day2 00110000
day 10110000
实现:
可以将每一个key作为日期,然后每一个二进制位对应一个用户,当天用户登录时将对应的二进制位设置为1;如:
day1表示0和3对应的用户当天有登录,
day2表示2和3对应的用户当天有登录,
day表示在day1到day2期间0、2、3对应的用户有登录,即活跃用户。
其他扩展场景同上面依次类推。