*Redis BITFIELD_RO 命令

只读版本的 BITFIELD 命令。获取位域值,不修改任何数据。Redis 6.0+ 引入。


*语法

BITFIELD_RO key [GET type offset | GET type #idx] [...]

*参数说明

参数 类型 必填 说明
key String 键名
GET 标志 获取位域
type String 数据类型:i 有符号整数,u 无符号整数,后接位数
offset Integer 位偏移
#idx Integer 索引偏移(# 表示基于类型宽度的索引)

*返回值

条件 返回值
有值 位域值数组
key 不存在 0 数组

*时间复杂度

O(1)

*

*示例

> SETBIT mykey 0 1
> SETBIT mykey 1 1
> SETBIT mykey 2 1
> BITFIELD_RO mykey GET u4 0
1) (integer) 7

> BITFIELD_RO mykey GET u2 #0 GET u2 #1
1) (integer) 3
2) (integer) 1

*常见错误

  1. 使用 SET/INCR/INCRBY/OVERFLOW:BITFIELD_RO 只支持 GET,不支持修改操作。

*最佳实践

  1. 副本只读位域操作:在只读副本上执行位域读取,分担主节点压力。

*FAQ

Q: BITFIELD_RO 和 BITFIELD 有什么区别? A: BITFIELDRO 是只读命令,只支持 GETBITFIELD 支持 GET/SET/INCRBY 等读写操作。BITFIELDRO 可在只读副本上执行。

Q: BITFIELD_RO 可以执行多个 GET 吗? A: 可以。一次命令可以执行多个 GET 操作,返回多个值。