Redis基础知识之bitmap位图类型
1.bitmap基本思想
bitmap的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了bit为单位来存储数据,因此在存储空间方面,可以大大节省,并且因为是二进制进行操作,所以操作速度会非常快。
2.bitmap的使用
2.1 sitbit
根据字节的bit位的索引进行操作,执行指令是sitbit key 索引值 需要设置的值。
因为一个字节的长度是8位,所以在没有超过8位的情况下长度都只会是1,超过8位后会开辟新的字节会变成2+,如下图所示:当设置k1的第一个索引位的值为1时,实际值01000000通过ASCII码可以知道是@字符,当通过setbit将k1的第七个索引位的值继续设置为1时,实际k1的值已经变为01000001,通过ASCII码可以知道是A字符,此时长度都没有超过8位(一个字节的长度)所以显示的长度是1;此时设置k1的第九个索引位为1时,k1的值变为 01000001 01000000,通过ASCII码可以知道是A@,因为超过了8位所以重新扩充了一个字节,长度因此变为2。
2.2 bitpos
是通过字节开始和结束的下标查找第一次出现的需要查找元素的 全量位的索引,指令为bitpos key 查找元素 开始的字节下标 结束的字节下标,如下图所示,查找之前的k1(01000001 01000000)中0元素第一次出现的位置,从第一个字节开始到第二个字节结束,查找返回的全量所谓位为0,最后一个bitpos k1 1 1 1,是查找k1中1元素第一次出现的位置,从第二个字节开始到第二个字节结束,查找返回的全量所谓位为9,
2.3 bitcount
是统计数据中1的数量,指令为bitcount key 开始字节位置 结束字节位置
2.4 bitop
bitop是让k1和 k2进行与或非等位操作的指令,指令为bitop 与或非等操作(and/or等) 目标字符(任意设置)计算的字符一 计算的字符二,如图所示将k1(01000001)A和k1(01000010)B进行与操作(全1则1有0则0)结果为@字符(结果为01000000)
再举个栗子,k1和k2进行或运算(有1则1,全0则0),结果为(01000011)C字符。
- 点赞
- 收藏
- 关注作者
评论(0)