redis--020

一、基础概念

Redis 的 BitMap 本质是 String 字符串类型,不是独立数据结构。

  • 最大容量:512M,对应 \(2^{32}\) 个 bit 位
  • 核心思想:一个 bit 位只存 0 / 1,用偏移量 offset 映射业务对象,节省存储空间

典型场景:用户按月签到,offset 代表当月第几天,1 = 签到,0 = 未签到

二、核心命令汇总

表格

命令 作用
SETBIT key offset value 在指定偏移 offset 位置,写入 0 或 1
GETBIT key offset 获取指定 offset 位置的 bit 值
BITCOUNT key [start end] 统计 key 里值为 1 的 bit 数量(签到总次数)
BITFIELD 批量查询 / 修改 / 自增多个 bit 位
BITFIELD_RO 只读版本,批量读取 bit 数组,返回十进制
BITOP op destkey key1 key2... 多 Bitmap 做位运算:AND 与、OR 或、XOR 异或,结果存入 destkey
BITPOS key bit [start end] 在指定范围查找第一个 0 或者 1 所在的 offset 位置

三、业务案例:用户按月签到

key 设计:sign:userId:年月,例如 sign:zhangsan:202201

  • offset = 日期 - 1(第 1 天 offset=0,第 31 天 offset=30)
  1. 用户 1 月 5 号签到:SETBIT sign:zhangsan:202201 4 1
  2. 查询 5 号有没有签到:GETBIT sign:zhangsan:202201 4
  3. 统计 1 月一共签到多少天:BITCOUNT sign:zhangsan:202201
相关推荐
我不会起名字3221 小时前
Redis 突然只能读不能写:MISCONF 报错的 3 类触发条件与 4 步恢复
运维·redis·持久化·排查·misconf
我不会起名字3222 小时前
Redis 从 0 到 1(九):主库宕机 30 秒自动切主——1 主 2 从 3 哨兵 + Go 客户端
redis·docker·sentinel·高可用·哨兵
毕业设计7039 小时前
(免费领源码)SSM董家湾线上点餐系统04682- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·redis·mysql·tomcat·maven·mybatis·ssm
用户0942485680311 小时前
第1章:Redis 术语全景与单线程工作原理
redis·快应用·源码阅读
hflmwl812 小时前
RedisDesktopManager安装包中文版官方下载,redis可视化客户端工具下载
数据库·redis·缓存·可视化客户端工具
用户849137175471613 小时前
订单超时未支付自动取消实现方案 | 三种方案详解
redis·面试·rabbitmq
easyboot13 小时前
Memurai Windows下的redis
redis
我不会起名字32214 小时前
Redis RDB 落盘时的 fork 停顿:COW 机制与 3 个降低影响的配置
redis·持久化·fork·cow·rdb
蓝胖的四次元口袋14 小时前
Redis 知识梳理(4)
数据库·redis
我不会起名字32214 小时前
Redis 从 0 到 1(十一):缓存穿透/击穿/雪崩三连击,Go 3 套防御代码
redis·缓存·go·布隆过滤器·雪崩