Bitmaps的介绍

  • 现代计算机使用二进制位作为信息存储的基本单元。一个字节(Byte)等于8个二进制位(bit)。合理的使用位能有效提高内存使用率和开发效率。
  • 位是最小信息单位,可以表示两个状态之一。
  • 字节是更大的单位,用多个位组成,在计算机中数据以字节为单位进行存储和访问。
  • Redis提供了Bitmaps这种,虽然本质上也是字符串,但是他却可以对字符串进行位的操作。
  • Bitmaps单独提供了一套命令,有区别于使用字符串String的命令。
  • 可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量。

关于Bitmaps在Redis中的操作指令

  • setbit设置值
  • setbit key offset value(设置键的第offset个位的值,从0开始计算)
  • 不同学号的用户分别进行了一次的访问、后面2019102857写的意思是从第0位开始算起第2019102857个位。显然这样子的设置并不是很合理。学号是由相同的数组开头的,这里是201910。要是直接将上述学号直接操作Bitmaps的位偏移量,势必会造成内存的浪费,我们可以使用学号减去201910,后续的数组作为偏移量来进行计算。
    Redis高级数据结构之Bitmaps-LMLPHP
  • gitbit获取值
  • gitbit key offset
  • 存在访问或则会返回1,对应的学号id没有访问过,或者学号都不存在都会返回0
    Redis高级数据结构之Bitmaps-LMLPHP
  • bitcount获取Bitmaps指定范围位数上是1的个数
  • bitcount [strat] [end]
  • 从学号0到学号2019102860刚好这之间只有4人各自访问一次
    Redis高级数据结构之Bitmaps-LMLPHP
  • bitop Bitmaps 间的运算
  • bitop op destkey key [key …]
  • 下面这个是求并集
  • and并集、or交集、not非、xor异或
    Redis高级数据结构之Bitmaps-LMLPHP
  • 计算Bitmaps中第一个值为targetBit的位偏移量
  • bitpos key targetBit [start] [end]
  • start 、end可以省略,省略将会遍历整个Bitmaps
  • 返回值是字符串里面第一个被设置为0或者1的bit位
    Redis高级数据结构之Bitmaps-LMLPHP

删除当前redis数据库中key的命令

  • flushdb

Redis高级数据结构之Bitmaps-LMLPHP

  • flushall
  • 删除redis中全部key的命令
    Redis高级数据结构之Bitmaps-LMLPHP

Bitmaps存储的优势对比

06-04 17:17