news 2026/5/1 4:36:32

蓝易云 - Redis之bitmap类型解读

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
蓝易云 - Redis之bitmap类型解读

Redis 的 Bitmap 本质上不是“新数据类型”,而是把 String 当成一段连续的二进制位数组来用:每一位只有 0/1,非常适合做“海量布尔状态”的低成本存储与聚合统计 ✅🙂


1)核心特性:为什么 Bitmap 适合“业务运营数据”

  • 极致省内存:1 个状态只占 1 bit。粗算公式:N 个用户状态 ≈ N / 8 字节(不含 key 与元数据)。

  • 天然支持聚合:支持按位统计、按位或/与/异或做集合运算(活跃、留存、交集、并集)。

  • 高性能:单点读写位(GETBIT/SETBIT)接近 O(1),适合高并发写入。


2)命令实战:最常见的“签到/活跃”模型

示例:按“天”记录用户是否活跃(offset = userId)

SETBIT active:20251227 10001 1 GETBIT active:20251227 10001 BITCOUNT active:20251227

解释:

  • SETBIT key offset value:把active:20251227的第10001位设置为1,表示该用户当天活跃。offset 越大,底层字符串会扩容,因此 userId 若跨度极大要评估内存。

  • GETBIT:读取该用户当天是否活跃,返回 0/1,适合接口秒级判断。

  • BITCOUNT:统计整张位图中为 1 的数量,可直接得到当天 DAU(日活)。


3)留存/交集:用位运算直接算(企业最爱这一步)

BITOP AND retain:20251226_20251227 active:20251226 active:20251227 BITCOUNT retain:20251226_20251227

解释:

  • BITOP AND destkey key1 key2:对两天活跃位图做按位与,只有两天都为 1 的用户位才会保留为 1,这就是 次日留存人数。

  • BITCOUNT destkey:统计留存人数,避免把明细拉回业务层计算,省网络与 CPU。


4)Bitmap 工作流(文本流程图)

定义 <span style="color:red">Key 维度</span>(按天/按月/按活动) ↓ 设计 <span style="color:red">offset 映射</span>(userId / dayIndex / featureIndex) ↓ 用 <span style="color:red">SETBIT</span> 写入状态(0/1) ↓ 用 <span style="color:red">GETBIT</span> 做实时判断 ↓ 用 <span style="color:red">BITCOUNT / BITOP</span> 做统计与交并集

5)对比表:什么时候 Bitmap 赢,什么时候别硬上

需求场景推荐方案原因
海量用户 0/1 状态(签到、是否活跃、是否命中)Bitmap极省内存 + 易聚合
需要保存“具体成员列表”并做增删查SetBitmap 只能表达位,不保存成员信息
只要估算去重(允许少量误差)HyperLogLog更省内存,但不可回溯明细
要保存计数/多字段位段(如 3bit 等级、5bit 权重)BITFIELD位段写入更紧凑(需严谨规划)

6)三条“务实避坑”建议(很关键)

  1. 避免超大稀疏 offset:例如直接用 10 亿的 userId,会导致位图扩容到对应字节,内存瞬间膨胀。可先做 id 压缩映射或按区间分片 key。

  2. 维度要可控:常用按天/按月建 key,并配合 TTL,避免历史数据无限增长。

  3. 统计尽量在 Redis 内完成:BITOP + BITCOUNT 比“把数据拉回应用层遍历”更稳、更省成本。🙂

如果你告诉我你的具体业务(例如:签到按“用户维度”还是按“日期维度”、userId 是否连续、日活量级),我可以给你一套更贴近生产的 key 设计与分片策略,让 Bitmap 既省内存又不踩扩容雷。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:15:51

Spring的命名空间

Spring的命名空间 一、总述二、具体实验 2.1引入自定义命名空间 首先要加入要引入的东西的坐标&#xff08;也就是pom文件中的依赖&#xff0c;以引入springmvc为例&#xff09; <dependency><groupId>com.alibaba</groupId><artifactId>druid</art…

作者头像 李华
网站建设 2026/4/29 21:49:36

如何监控和调优TensorRT推理引擎的性能?

如何监控和调优TensorRT推理引擎的性能&#xff1f; 在构建高并发、低延迟的AI服务时&#xff0c;一个常见的挑战是&#xff1a;为什么训练精度达标的模型&#xff0c;部署后却跑不快&#xff1f;明明GPU利用率显示还有余量&#xff0c;推理延迟却始终下不来。这背后往往不是硬…

作者头像 李华
网站建设 2026/4/24 23:17:23

自动驾驶中的实时推理需求与TensorRT解决方案

自动驾驶中的实时推理需求与TensorRT解决方案 在一辆L4级自动驾驶汽车穿梭于城市街道的瞬间&#xff0c;它的“大脑”每秒要处理来自多个摄像头、激光雷达和毫米波雷达的海量数据。从识别前方突然闯出的行人&#xff0c;到预测邻车变道意图&#xff0c;每一个决策背后都依赖深度…

作者头像 李华
网站建设 2026/4/22 4:50:02

基于TensorRT的多模态大模型推理架构设计

基于TensorRT的多模态大模型推理架构设计 在智能客服、内容推荐和自动驾驶等前沿场景中&#xff0c;多模态大模型正逐步成为核心技术支柱。像CLIP、Flamingo、Qwen-VL这类能够同时理解图像与文本的模型&#xff0c;虽然具备强大的语义建模能力&#xff0c;但其庞大的参数量和复…

作者头像 李华
网站建设 2026/4/29 4:09:41

基于TensorRT的A/B测试平台构建方法

基于TensorRT的A/B测试平台构建方法 在推荐系统、广告排序和语音交互等实时性要求极高的AI服务中&#xff0c;模型上线前的决策不能再仅依赖离线指标。一个新版本模型即便在测试集上准确率提升了0.5%&#xff0c;如果导致线上P99延迟翻倍&#xff0c;也可能被直接否决。这种“…

作者头像 李华
网站建设 2026/5/1 1:13:14

超详细教程:使用Docker运行TensorRT镜像

使用Docker运行TensorRT镜像&#xff1a;从零构建高性能推理环境 在当今AI系统部署的实践中&#xff0c;一个常见的困境是&#xff1a;模型在实验室里表现优异&#xff0c;一旦上线却频频出现延迟高、吞吐低、资源占用大等问题。更令人头疼的是&#xff0c;“在我机器上能跑”…

作者头像 李华