Redis 位图法统计用户连续登陆

原理分析:每日用户登录状态只有两个1|0  ,redis的setbit 操作可以对相应的位进行操作.

示例: 现在有三个用户  张三  id =>1 ;李四 id=>2 ; 王五 id=>3

星期一  mon  

setbit  date user_id value  

date => 日期  user_id=>用户id  value=>值 (1是登录, 0是未登录)   

setbit mon  1 1     星期一 用户id为1 的用户登录

setbit mon 2 0   星期一 用户id为2 的用户未登录

setbit mon 3 1 星期一 用户id为3 的用户登录 

星期二 tue 

setbit  tue 1 1   星期二用户id为1 的用户登录

setbit tue 2 1   星期二用户id为2 的用户登录

setbit tue 3 0  星期三 用户id为3 的用户未登录


对星期一 mon 和星期二 tue 进行 and 操作,把结果放到result中



可以看到 1号用户连续登陆两天  result 中 位值为1  

用户2和3 没有连续登陆 result 中 位值为0 

利用位图统计用户节约空间 避免直接操作数据库提高效率

以上观点如有不对支取还请指正!!!

你可能感兴趣的:(Redis 位图法统计用户连续登陆)