Redis基础知识之bitmap位图类型

举报
多米诺的古牌 发表于 2022/02/22 15:11:02 2022/02/22
【摘要】 1.bitmap基本思想bitmap的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了bit为单位来存储数据,因此在存储空间方面,可以大大节省,并且因为是二进制进行操作,所以操作速度会非常快。2.bitmap的使用2.1 sitbit根据字节的bit位的索引进行操作,执行指令是sitbit key 索引值 需要设置的值。因为一个字节的长度是8位,所以在...

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字符。


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。