📚 分类
redis
🕵🏽‍♀️ 问题描述
什么是位图bitmaps?
👨‍🏫 问题讲解
Redis Bitmaps 是 Redis 提供的基于字符串类型(string)实现的位图功能,本质是将字符串的每个字节拆分为 8 个二进制位(bit),通过位操作(设值、取值)实现 “用 bit 存储数据状态”。

# 将 key 对应偏移量 offset 的 bit 设为 1/0
SETBIT key offset value 

# 获取 key 对应偏移量 offset 的 bit 值(1/0)
GETBIT key offset

# 统计 key 中值为 1 的 bit 个数(可选字节范围 start-end)
BITCOUNT key [start end]

# 对多个 key 做位运算(op 为 AND/OR/XOR/NOT),结果存到 destkey
BITOP op destkey key1 [key2...]

# 查找 key 中第一个值为 1/0 的 bit 偏移量
BITPOS key value [start end]
🏳️‍🌈 问题总结
❒ 使用 SETBIT 时,若 offset 远超当前字符串长度,Redis 会怎么处理?
✔ Redis 会自动 “扩展字符串长度”,以覆盖目标 offset,扩展出的空白部分(原字符串长度到 offset 之间的 bit)会被设为 0。

❒ Redis Bitmaps 的局限性有哪些?
✔ 仅支持整数 ID
✔ 偏移量过大导致内存浪费
✔ 位运算的性能瓶颈:对超大规模 Bitmaps(如 1GB 大小)执行 BITOP 或 BITCOUNT,会占用较多 CPU 和网络资源,需控制操作频率(可拆分到非峰值时段执行)
📖 问题信息
📈 浏览次数:21 | 📅 更新时间:2026-01-21 18:33:02
📦 创建信息
🏷️ ID:154 | 📅 创建时间:2025-10-13 07:10:29