尚硅谷bilibili视频讲解:/video/BV1Rv41177Af?p=15
简介
现代计算机用二进制(位) 作为信息的基础单位, 1个字节等于8位, 例如“abc”字符串是由3个字节组成, 但实际在计算机存储时将其用二进制表示, “abc”分别对应的ASCII码分别是97、 98、 99, 对应的二进制分别是01100001、 01100010和01100011,如下图
合理地使用操作位能够有效地提高内存使用率和开发效率。
(1)
Bitmaps本身不是一种数据类型, 实际上它就是字符串(key-value) , 但是它可以对字符串的位进行操作。
(2)
Bitmaps单独提供了一套命令, 所以在Redis中使用Bitmaps和使用字符串的方法不太相同。 可以把Bitmaps想象成一个以位为单位的数组, 数组的每个单元只能存储0和1, 数组的下标在Bitmaps中叫做偏移量。
命令
# 设置Bitmaps中某个偏移量的值(value值为0或1),偏移量从0开始setbit <key> <offset> <value># 获取Bitmaps字节数组中某个偏移量的值getbit <key> <offset># 统计字符串从start字节到end字节比特值为1的数量 (0 到 -1)表示0到最后bitcount <key> [start end]# bitop是一个复合操作, 它可以做多个Bitmaps的and(交集) 、 or(并集) 、 not(非) 、 xor(异或) # 操作并将结果保存在新的destkey中。bitop and (or/not/xor) <destkey> [key…]
Bitmaps与set对比
假设网站有1亿用户, 每天独立访问的用户有5千万, 如果每天用集合类型和Bitmaps分别存储活跃用户可以得到表
很明显, 这种情况下使用Bitmaps能节省很多的内存空间, 尤其是随着时间推移节省的内存还是非常可观的
如果觉得《redis新数据类型-bitmaps》对你有帮助,请点赞、收藏,并留下你的观点哦!