Skip to content
DAILY QUOTE

“ ”

BitMap是由一个个二进制位组成,在BitMap中只存放0或者1,如下所示的BitMap结构图:

Redis中是利用String类型数据结构实现存储BitMap,因此最大上限是512MB,转换为bit则是2^32个bit位即512* 1024* 1024 * 8bit

BitMap的操作命令有:

  • SETBIT:向指定位置(offset)存入一个0或1
  • GETBIT:获取指定位置(offset)的bit值
  • BITCOUNT:统计BitMap中值为1的bit位的数量
  • BITFIELD:操作(查询、修改、自增)BitMap中bit数组中的指定位置(offset)的值
  • BITFIELD_RO:获取BitMap中bit数组,并以十进制形式返回
  • BITOP:将多个BitMap的结果做位运算(与 、或、异或)
  • BITPOS:查找bit数组中指定范围内第一个0或1出现的位置

以8bit的一字节存储,如超出8个位,自动扩容到16位进行存储,后面未设置1的位置补0,以此类推。

u表示无符号,i表示有符号,一般使用无符号u,例如BITFIELD bm1 get u2 0中u2表示获取两个bit位,从0位置开始获取,返回无符号整数,如果存入的数据是111,返回的就是7

注意:Redis客户端必须使用2020以前版本或者2022.2以后版本,2021不支持二进制数据显示