MST

星途 面试题库

面试题:Redis BITCOUNT命令在中等规模数据处理中的应用

假设你有一个中等规模的用户登录状态数据集,用Redis的BITMAP数据结构存储,每个用户对应一个bit位表示当天是否登录。现在需要统计过去一周内每天的登录用户数,如何使用BITCOUNT命令高效实现?请描述实现思路并给出大致代码示例(语言不限)。
13.1万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 由于Redis的BITMAP每个bit位对应一个用户在某一天的登录状态,一周有7天,所以会有7个BITMAP。
  2. 分别对这7个BITMAP使用BITCOUNT命令,BITCOUNT命令用于统计指定范围内值为1的bit位数量,也就是登录用户数。

代码示例(Python + Redis-py)

import redis

# 连接Redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)

# 假设这7个key分别对应过去一周的7天
keys = ['day1_bitmap', 'day2_bitmap', 'day3_bitmap', 'day4_bitmap', 'day5_bitmap', 'day6_bitmap', 'day7_bitmap']

for key in keys:
    login_count = r.bitcount(key)
    print(f"当天登录用户数: {login_count}")