美文网首页
使用Redis统计活跃用户

使用Redis统计活跃用户

作者: 小甲鱼python | 来源:发表于2017-06-15 09:36 被阅读163次

统计活跃用户这个案例非常经典,也是我当时学习redis时,接触到的第一个让我眼睛一亮的使用方式

场景

用户登录后需要记录,以便以后进行登录统计

统计需求主要有:

(1)今天的登录用户数

(2)3天内都登录过的用户

(3)7天内登录过的用户

常规解决方案

如果不用redis,通常做法是在用户登录时记录日志,或者在数据库中添加一条登录记录

然后按照需求进行定时统计

redis解决方案

redis的 bit 操作非常适合处理这个场景

因为bit的值为 0或1,用户是否登录也可以用 0或1 来表示

我们把每天的用户登录信息记录到一个key中,值中的每个offset的值就是用户登录的标识

例如

bit 基本操作示例

(1)设置关键字的指定offset的值为 0 或 1

setbit key 100 1

(2)bit运算

例如

key1 -> 0101

key2 -> 0011

and 运算

bitop and ret key1 key2

就是对 key1 key2 各位进行 and 运算后赋值给 ret,结果为 0001

or 运算

bitop or ret key1 key2

就是对 key1 key2 各位进行 or 运算后赋值给 ret,结果为 0111

(3)bit值为1的数量

bitcount key

通过bit操作就可以实现用户统计的需求了

例如今天为 2016-01-18

把 key 定义为 userlogin:20160118

(1)用户登录

ID为 100 的用户登录了,执行

setbit userlogin:20160118 100 1

(2)统计今天登录的用户数

bitcount userlogin:20160118

(3)统计3天内都登录过的用户

“都登录过”是要取得bit值都为1的,通过 and 计算获取

bitop or ret userlogin:20160116 userlogin:20160117 userlogin:20160118

(4)统计7天内登录过的用户

“登录过”表示bit值有一个为 1 即可,所以通过 or 计算获取,命令与上一个类似

如果你觉得眼前需要更好的提高你可以来千锋学PHP,国内最好的PHP机构。

相关文章

  • 使用Redis统计活跃用户

    统计活跃用户这个案例非常经典,也是我当时学习redis时,接触到的第一个让我眼睛一亮的使用方式 场景 用户登录后需...

  • 利用Redis统计活跃用户

    用位记录人1-代表张三,2-代表张四,3-代表张五;在28号这天,三人都登陆了,做如下设置 29号这天,只有张三登...

  • 如何用redis做活跃用户统计-HyperLoglog

    原文在这里: 如何用redis做活跃用户统计-HyperLoglog 第一种做法:用redis的set集合。用户登...

  • Redis 位图基础到统计活跃用户

    前言 大家有没有想过如何统计活跃用户数量?如果是自己做,那该怎么做? 这里思考一分钟,后面我将分享一下如何使用 r...

  • 友盟统计与崩溃日志

    友盟统计,包含:用户分析: 新增用户、活跃用户、启动次数等;留存统计:留存用户、用户新鲜度,用户活跃度;用户参与度...

  • Redis学习-位图(bitmap)法统计活跃用户

    一亿个用户,有的用户频繁登录,也有不经常登录的。如何记录用户的登录信息?如何查询活跃用户?[如一周内 登录三次的]...

  • 新微商怎么做:QQ空间微商兵法

    腾讯的QQ是国内使用用户最多的聊天工具,它所捆绑的QQ空间据统计活跃账户多达5亿个,记住是活跃用户,不是注册用户,...

  • iOS App使用分析

    1. 分析点 版本分布 启动频次 活跃用户、用户留存 用户行为统计 Crash收集 2. 可使用的工具 App a...

  • Redis高级功能之 - bitmap

    亿级活跃用户场景 实现日活跃统计 实现周活跃统计 为了增强用户粘性,增加一个连续打卡发放积分功能,怎么实现连续打卡...

  • 使用 Redis 统计在线用户人数

    http://blog.huangz.me/diary/2016/redis-count-online-users...

网友评论

      本文标题:使用Redis统计活跃用户

      本文链接:https://www.haomeiwen.com/subject/cpjyqxtx.html