千家信息网

Redis中怎么用setbit统计活跃用户

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"Redis中怎么用setbit统计活跃用户",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Redis中怎么用setbit统计活跃用户
千家信息网最后更新 2026年11月03日Redis中怎么用setbit统计活跃用户

这篇文章主要讲解了"Redis中怎么用setbit统计活跃用户",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Redis中怎么用setbit统计活跃用户"吧!

一、需求背景

首先,我们来看一下需求:网站统计用户登录的次数,具体如下:

  • 网站有1亿个用户,有经常登录的,也有不经常登录的

  • 如何来记录用户的登录信息

  • 如何查询活跃用户:比如:一周内,登录3次的

二、使用传统的关系型数据库

我们使用传统的关系型数据库(比如:Oracle)来存储这样的数据

每周产生7亿条数据,对于任何一个关系型数据库来说,都是非常不好维护的,对性能也会有很大的影响。

三、使用Redis的setbit操作

Redis支持对String类型的value进行基于二进制位的置位操作。通过将一个用户的id对应value上的一位,通过对活跃用户对应的位进行置位,就能够用一个value记录所有活跃用户的信息。如下图所未,下图中的bitmap有9个位被置为1,表示这9个位上对应的用户是今天的活跃用户。其中第15位表示uid为15的用户,第一位表示uid为0的用户。(如果你的uid不是从1开始的,比如从100000开始,实际上你也可以相应的用uid减去初始值来表示其位数,比如1000000用户对应到bitmap的第一位)

具体的代码类似下面这样:

redis.setbit(key, user_id, 1)

这样一次记录的复杂度是O(1),在Redis中速度非常快。

下面代码是在Redis CLI中执行的Demo演示,比如:用户ID为100的用户在星期一登录了网站,我们就通过setbit操作,把星期一对应的100位的值置为1,

127.0.0.1:6379> setbit monday 100 1(integer) 0

而我们通过每天换用一个不同的key来将每天的活跃用户状态记录分开存。并且可以通过一些与或运算计算出N天活跃用户,和连接N天活跃用户这样的统计数据。

如下图,第一行表示星期一的活跃用户情况,第二行表示周二的,以此类推。为样我们通过对N天的活跃用户记录取并集操作,就能得出在N天内活跃过的用户列表。

感谢各位的阅读,以上就是"Redis中怎么用setbit统计活跃用户"的内容了,经过本文的学习后,相信大家对Redis中怎么用setbit统计活跃用户这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

用户 统计 数据 登录 数据库 星期 网站 学习 个位 代码 传统 信息 内容 情况 需求 不同 复杂 很大 以此类推 一行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州紫鲸互联网科技有限公司 科技与互联网发展 智网互联网科技 宜安科技 互联网金融 蓝色互联网科技 互联网科技公司需要的职位 科技互联网的估值 金融科技与互联网金融相同和不同 互联网和黑科技的看法 黑科技闪耀互联网之光 银川新华互联网科技学校联系电话 阿里互联网科技企业 江苏互联网智能科技软件 宇信科技在杭州互联网排第几 互联网安防科技感 版纳互联网科技选哪家 兰石爱特工业互联网科技分公司 杭州融税互联网科技有限公司 科技互联网专业工作会议发言稿 科技美学互联网 艺术 科技互联网产品 善班互联网科技 消费医药和互联网科技 深圳市优智互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 恒生互联网科技业指数调整周期 产业互联网科技服务公司 信承诺互联网科技有限公司 恒生科技指数 中概互联网 优雇互联网科技有限公司
0