位图介绍以及基本用法

位图

1.bitmap介绍

位图不是真正的数据类型,它是定义在字符串类型中,一个字符串类型的值最多能存储512M字节的内容

那么一个字符串的位上限就是:512M=2^32bit

2.位图的一些命令

  • setbit

    设置某一位上的值

    语法:SETBIT key offset value (offset位偏移量,从0开始)

  • getbit

    获取某一位上的值

    语法:GETBIT key offset

    获取到的值是ASCLL表中对应的值

  • bitpos

    返回指定值0或1在指定区间上首次出现的下标

    语法:BITPOS key bit [start] [end](字节索引,0表示第一个字节

    image-20220816213411649

  • bitop

    语法:BITOP operation destkey key [key …]

    对一个或多个保存二进制位的字符串 key 进行位操作,并将结果保存到 destkey 上。operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种

    BITOP AND destkey key [key …] ,对一个或多个 key 求逻与,并将结果保存到 destkey

    BITOP OR destkey key [key …] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey

    BITOP XOR destkey key [key …] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey

    BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey

    除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入,当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0,空的 key 也被看作是包含 0 的字符串序列

    image-20220816214519034

  • bitcount

    统计指定区间上值为1的个数

    语法:BITCOUNT key [start] [end] start end 字节的索引 正方向

    从左向右从0开始,注意官方start、end是位,测试后是字节

    BITCOUNT key [start] [end] start end 字节的索引 负方向

    从右向左从-1开始,注意官方start、end是位,测试后是字节

image-20220816215511197

Tags: