专栏首页性能与架构使用Redis统计活跃用户

使用Redis统计活跃用户

统计活跃用户这个案例非常经典,也是我当时学习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 计算获取 命令与上一个类似

本文分享自微信公众号 - 性能与架构(yogoup),作者:杜亦舒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-01-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mysql join和sort的buffer

    参数查看命令 SELECT @@join_buffer_size; SELECT @@sort_buffer_size; join_buffer_size 当...

    dys
  • 微信朋友圈的技术思路

    本文根据微信朋友圈负责人陈明在2015年ArchSummit大会的演讲“微信朋友圈技术之道”整理的,由于声音不清晰,所以整理的不够全面,抱歉 朋友圈每天的发表...

    dys
  • 如何有效使用Mysql的Query Cache

    须要根据Query Cache失效机制来判断哪些表适合使用Query哪些表不适合。 由于Query Cache的失效主要是因为Query所依赖的Table数据发...

    dys
  • 一个少有人知的导致 SSH 登录缓慢的原因

    这是 PAM 的 last_log 模块的输出,这个数据统计的是上次成功登录之后,有多少次失败登录的尝试。这些失败尝试主要来源于网上各种扫描器,统计数据来源于文...

    horsley
  • 单点登录(SSO)的设计与实现

    SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。https://baike....

    KenTalk
  • 新能力丨报告,邮箱登录已支持!

    小程序端、Web端、移动端......无论来自哪端的应用,想要正常运转,都离不开用户登录鉴权这一步骤。云开发作为国内领先的云原生一体化应用开发平台,为小程序、W...

    腾讯云开发TCB
  • Linux登录那点事

    跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 我们登录linux的时候基本上不太关注...

    逸鹏
  • 实战基于矩阵分解的推荐系统

    设: U 为所有用户集合 P 为所有物品集合 R 为用户对物品的喜好程度 模型 Model(R) = U * P 算法核心: 通过用户对不同物品的打分,来预测用...

    周萝卜
  • 当前登录人管理——UserManage源代码下载(2009.10.16更新)

    一、介绍和下载 名称: 当前登录人管理(UserManage) 版本: 1.0.0 上传时间: 2009.10.28 主要功能: 用户登录,保存登录状...

    用户1174620
  • Xshell 登录 AWS CentOS 出现“所选择的用户秘钥未在远程主机上注册“,最终解决办法!

     其实就是 登录用户名错了,是 root,不是centos 也不是 ec2-user !  Xshell 连接配置界面如下 ? 最重要是 登录授权配置 ?  最...

    庞小明

扫码关注云+社区

领取腾讯云代金券