Redis中的bitmaps

        在我们平时的开发过程中,会有一些bool类型数据需要存取,比如用户一年的签到记录,签了是1,没签是0,要记录365天。如果使用普通的key/value,每个用户要记录365个,当用户数上亿的时候,需要的存储空间是惊人的。

        为了解决这个问题,Redis提供了位图数据结构,这样每天的签到记录只占据了一个位,365天就是365个位,46个字节(一个稍长一点的字符串)就可以完全容纳下来,这就大大节约了存储空间。位图的最小单位是bit,每个bit的取值只能是0或1。

        位图不是特殊的数据结构,它的内容其实就是普通的字符串,也就是Byte数组。我们可以使用普通的get/set直接获取和设置整个位图的内容,也可以使用位图操作getbit/setbit等将byte数组看成位数组来处理。

        java中也有一个类叫BitSet,也提供了类似于位图的功能。

你可能感兴趣的:(redis,redis)