[Redis小知识]从业务角度分析一下BitMap的作用
提示:今天和大家分享bitmap的知识
前言
BitMap Bit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。`
一、日常使用Bitmap的业务
二、bitmap使用逻辑
1.bitmap简介
当然就是节约内存了,365 天相当于 365 bit,又 1 字节 = 8 bit , 所以相当于使用 46 个字节即可。
BitMap 就是通过一个 bit 位来表示某个元素对应的值或者状态, 其中的 key 就是对应元素本身,实际上底层也是通过对字符串的操作来实现。Redis 从 2.2 版本之后新增了setbit, getbit, bitcount 等几个bitmap 相关命令。
2.bitmap基础指令
setbit的指令
代码如下(示例):SETBIT key offset value : 设置 key 第 offset 位为value (1或0)
getbit 获取操作
GETBIT key offset 获取offset设置的值,未设置过默认返回0
bitcount 统计操作
bitcount key [start, end] 统计 key 上位为1的个数
总结
优点: 1. bitmap运算效率高,数据只有0和1,不涉及比较和移位; 2. 占用内存少 缺点: 1. 所有的数据不能重复,即不可对重复的数据进行排序 2. 当数据类似(1,1000,10万)只有3个数据的时候,用bitmap时间复杂度和空间复杂度相当大,只有当数据比较密集时才有优势。