千家信息网

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

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