1.bitmap位图
位图不是实际的数据类型,而是在String类型上定义的一组面向位的操作,使用1,0来表示数据,redis的key和value是有大小限制的,都是不能超过512M,那么bitmap最大能设置2^32的长度。
8 bit = 1byte
1024 byte = 1kb
1024 kb = 1Mb
512 * 1024 * 1024 *8 = 2^32l
使用
setbit k offset value offset为二进制的偏移量 针对二进制修改值为value
setbit k 1 1 -> get k = @ (0100 0000)
setbit k 7 1 -> get k = A (0100 0001)
setbit k 9 1 -> get k = A@ (0100 0001 0100)
bitcount k start end 统计二进制1出现的次数 start end 代表字节长度
bitcount k 0 0 计算出第0个字节八位当中的1的次数
bitcount k 0 1 计算出第0个字节和第一个字节 这十六位中出现的1的次数
bitpos key bit start end ,在该key中,第start的位置到end的位置 该bit的位置
bitpos k 0 1 1 ->8 (0100 0001 0 100)
bitop 二进制运算
使用场景
1.统计用户的登录天数 随机统计某阶段天数
可以把一年当成365个二进制位,登录则把某天改为1,统计某些天的1的次数
setbit json 320 1
setbit json 310 1
setbit json 1 1
setbit js