开发者社区> 问答> 正文

如何使用Redis bitmap进行活跃用户统计

如下图所未,下图中的bitmap有9个位被置为1,表示这9个位上对应的用户是今天的活跃用 户。其中第15位表示uid为15的用户,第一位表示uid为0的用户。(如果你的uid不是从1开始的,比如从100000开始,实际上你也可以相应的 用uid减去初始值来表示其位数,比如1000000用户对应到bitmap的第一位)
1
具体的代码类似下面这样:
redis.setbit(play:yyyy-mm-dd, user_id, 1)
这样一次记录的复杂度是O(1),在Redis中速度非常快。
而我们通过每天换用一个不同的key来将每天的活跃用户状态记录分开存。并且可以通过一些与或运算计算出N天活跃用户,和连接N天活跃用户这样的统计数据。
如下图,第一行表示星期一的活跃用户情况,第二行表示周二的,以此类推。为样我们通过对N天的活跃用户记录取并集操作,就能得出在N天内活跃过的用户列表。
2
下面表格表示对应一天,一周,一个月统计时所花费的时间。
4
请问如何使用Redis bitmap进行活跃用户统计?

展开
收起
落地花开啦 2016-02-18 12:00:43 4752 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    1.算出一天的活跃用户数量
    1
    2.计算某几个内活跃用户的数量(某一天活跃就算,所以是取并集)
    2
    具体的用法还很多,比如你还可以对独特终端的用户单独记一个bitmap,这样就可以统计不同终端用户的活跃情况。

    2019-07-17 18:43:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis集群演化的心路历程——从2.x到3.0时代 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载