Redis Bitmap 并不是一个实际的数据类型,而是定义在String类型上的bitwise基于二进制位的一组操作。
因为String是二进制安全的,最大长度512MB,适合构建2的32方个不同的bits,在每个bit位上存储0或1,适合存储boolean类型的信息。
这种方式记录,比使用key/value,最大的优点就是可以节省大量的存储空间。
1、单bit的赋值和查询提取操作,setbit key bit_number bit_value,getbit key,
其中setbit 命令 第一个参数为key,第二个参数为bit位数,从0开始计数,第三个参数为该bit位上存储的数值,值为1或者0,默认不写的话为0,
例如:setbit bitKey 100 1, setbit bitKey 10 1, setbit bitKey 0 1
getbit bitKey 10,返回1
2、基于一组bit的操作
bitcount bitKey,统计存储1的bit的个数。
bitpos bitKey 1,第一个为1的bit位置
bitpos bitKey 0, 第一个为0的bit位置
这个 bitcount 统计功能,记录网站用户在某段时间每天是否登录,登录的话记录1,不登录的话记录0,比如第1,3,10,12,15天登录了,可以设置
setbit user:123 1 1
setbit user:123 3 1
setbit user:123 10 1
setbit user:123 12 1
setbit user:123 1 51
然后使用bitcount user:123 统计实际多少天登录了。
3、bitop 位元操作
使用方法:bitop operation resultKey bitKey1 bitKey2 bitKey3
意思是 对bitKey1, bitKey2, bitKey3 几个key的数据进行operation操作,结果存储在 resultKey 中
operation 可以为and 逻辑并,or逻辑或,xor逻辑异或,not非