关于使用bitmap实现统计用户是否在线

来源:4-3 压力测试

菠萝吹雪gz

2020-12-16

用户ID为400、1221、379 的用户在 16、17号在线:
图片描述

统计了16、17号在线的用户数:
图片描述
共三个人 结果是我想要的,但是我想 获取到这三个人的 主键ID,使用下面的命令总是获取最后一个用户的主键ID 前两个没有获取到,还请老师指点:如何获取 totalonlineuser 中所有 1的位置

图片描述

写回答

1回答

InCowboy

2020-12-16

我们能确定的是你的这个数组下标会很长,因此你设计的是保存userId(应该是自增吧),这样插入的字节数组的长度有可能超过无符号或者有符号的最大长度,因此使用bitfield指令无法把它解析成十进制在进行获取(像我课程里面一个月的长度刚刚好),像你使用bitpos totalonlineuser 1 这只能获取第一个值为1的下标位置,它也不能获取所有的,所以我的想法是要么换个思路去解决这个在线人数的id问题,比如用sets集合

0
1
菠萝吹雪gz
谢谢老师
2020-12-16
共1条回复

高级Redis进阶课 解决Redis实际问题+掌握Redis6.x特性

以项目整合Redis各种场景,从此轻松应对各类Redis难题

934 学习 · 353 问题

查看课程