redis bitmap 在实际中有使用吗?

sprouting 发布于 2021/12/07 09:31
阅读 181
收藏 0

看了下bitmap的使用,在实际的工作中有使用场景吗?

语法:setbit key offset value

比如有这么个需求,统计现在全站人员的活跃度,用户的id是UUID,这个时候,咋存呢?

SETBIT uid:sign:用户UUID:年月 日 1   这样?

 

加载中
1
sprouting
sprouting

查了个例子,

统计用户每个月签到情况

在签到统计中,每个用户每天的签到用 1 个 bit 位表示,一年的签到只需要 365 个 bit 位。一个月最多只有 31 天,只需要 31 个 bit 位即可。

比如统计编号 89757 的用户在 2021 年 5 月份的打卡情况要如何进行?key 可以设计成 uid:sign:{userId}:{yyyyMM},月份的每一天的值 - 1 可以作为 offset(因为 offset 从 0 开始,所以 offset = 日期 - 1)。

  • 第一步,执行下面指令表示记录用户在 2021 年 5 月 16 号打卡。

     SETBIT uid:sign:89757:202105 15 1
  • 第二步,判断编号 89757 用户在 2021 年 5 月 16 号是否打卡。

     GETBIT uid:sign:89757:202105 15
  • 第三步,统计该用户在 5 月份的打卡次数,使用 BITCOUNT 指令。该指令用于统计给定的 bit 数组中,值 = 1 的 bit 位的数量。

     BITCOUNT uid:sign:89757:202105

这样我们就可以实现用户每个月的打卡情况了。

 

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部