前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Redis统计活跃用户

使用Redis统计活跃用户

作者头像
dys
发布2018-04-03 14:24:47
1.6K0
发布2018-04-03 14:24:47
举报
文章被收录于专栏:性能与架构

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档