现代计算机基于二进制原理,每个字节由8个位组成。例如,"big"字符串由3个字节构成,ASCII码分别为98、105、103,转换为二进制形式为01100010、01101001、01100111。位图(Bitmap)是一种通过位表示元素值或状态的数据结构,其中键代表元素本身,极大节省存储空间。Bitmap实质上是一个字符串,但能对字符串位进行操作。可将其想象为一个位数组,数组每个单元只存储0或1,数组下标为偏移量。常用命令包括设置值、获取值、获取特定范围的1值个数以及Bitmap间的运算。设置值:设置或清除key在指定偏移量处的位值(仅0或1)。获取值:从指定偏移量获取位值(从0开始计算)。统计特定范围1值个数:使用[start]和[end]表示起始和结束字节数。获取特定日期访问用户数:统计特定时间点的访问用户。执行运算:通过bitop操作,对多个Bitmap执行and、or、not、xor操作,并将结果保存在destkey中。Bitmap优势:基于位存储,节省空间;设置与读取操作时间复杂度分别为O(1)和O(n),操作快速;二进制数据便于计算;易于扩容。限制:Redis中位映射最大限制为512MB,即2^32位。建议每个key位数控制,以防读取操作时间复杂度O(n)增加。空间与时间计算:在MacBook Pro上,分配不同大小内存所需时间及空间计算。如网站有1亿用户,每天独立访问5千万,使用集合与Bitmap对比,使用Bitmap能显著节省内存。