Redis Bitfield 位运算高级用法
2026/7/27 7:44:22 网站建设 项目流程

一、Bitfield 定位

Bitmap 仅支持单 bit 读写;Bitfield 可一次性操作多 bit、多精度整数(u8/u16/i8/i32 等无符号 / 有符号整数),批量位运算,一条命令完成多组读写、增减,大幅减少网络 IO。

适用场景:

  • 批量用户积分、状态批量存储
  • 小型计数器按 bit 紧凑存储
  • 多段位区间一次性读写修改

二、命令基础语法

BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW wrap/sat/fail]

类型说明

  • u8/u16/u32:无符号 8/16/32 位整数
  • i8/i16/i32:有符号整数

溢出策略 OVERFLOW

  1. wrap:环绕溢出(默认,二进制循环)
  2. sat:饱和截断,到最大值不再上涨
  3. fail:溢出时报错不执行

三、实操示例

1. 读取多段位整数

从偏移 0 读取 u8,偏移 8 读取 i16

bitfield user_stat get u8 0 get i16 8

2. 批量写入位数值

# 0号8位无符号设为1,8号16位有符号设为100 bitfield user_stat set u8 0 1 set i16 8 100

3. 位区间自增(高频场景)

用户在线时长紧凑计数器,溢出饱和不超上限

bitfield user_stat overflow sat incrby u8 0 1

四、对比普通 Bitmap 优势

  1. 单命令执行多段位读写,减少多次 setbit 网络往返;
  2. 原生支持有 / 无符号整数自动转换,无需手动计算 bit 拼接;
  3. 内置自增与溢出保护,适合紧凑小型计数器;
  4. 支持一次性批量读取一批用户状态,统计性能大幅提升

五、实战场景

  1. 用户多维度状态压缩存储:1 字节存储在线、会员、签到 3 个状态;
  2. 轻量化计数器:用 16bit 存储小型数值,节省内存;
  3. 批量统计任务:一次性读取上千个 bit 数值批量计算

六、简单示例

# 写入两个8位无符号整数 bitfield test set u8 0 10 set u8 8 20 # 自增第一个数值,溢出饱和 bitfield test overflow sat incrby u8 0 5 # 读取结果 bitfield test get u8 0 get u8 8

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询