Redis-位图法实现简单统计

比如一个网站有1亿个用户, 现在要统计一周内连续登录的用户


方法:
可以用一个字节8个位表示7个人, 首位不算固定为0, 若某人周一登录则置为1, 没登录则为0

127.0.0.1:6379> set mon 01010100
OK
127.0.0.1:6379> set thu 01100101
OK
127.0.0.1:6379> 
......
127.0.0.1:6379> set sun 00010111
OK
127.0.0.1:6379> 

使用 bitop operation 进行and操作得到

127.0.0.1:6379> bitop and mon mon thu sun
(integer) 8
127.0.0.1:6379> get mon
"00000100"
127.0.0.1:6379> 

表明只有第五位用户连续一周登录


位图法非常节省空间

posted @ 2016-10-14 21:38  qlshine  阅读(1881)  评论(0编辑  收藏  举报