bitmap
使用情景
用户签到,打卡,电影广告是否被点击过
docker进入redis
docker exec -it <container_name> redis-cli
常用指令
- setbit 键值 offset(从0开始) 0|1
- getbit 键值 offset
- strlen 键值 (统计的是字节数占用多少:例如我们只SETBIT a1 0 1 和SETBIT a1 1 1,strlen a1 结果为1,但是SETBIT a1 8 1后就变成了2(原理是其实里面使用的是Byte(8位)))
- bitcount 键值:统计bitmap里面有多少个1,
bitcount升级版:bitcount 键值 开始offset 结束offset(统计在这个范围的位数中有几位1) - bitop 可以结合and or ...来使用(可以实现多个bitmap进行与或非操作)
bitop destkey a1 a2
额外需注意
按年去存储一个用户的签到情况,365 天只需要 365 / 8 ≈ 46 Byte,1000W 用户量一年也只需要 440MB 就足够了。
假如是亿级的系统,
每天使用1个1亿位的Bitmap约占12MB的内存(10^8/8/1024/1024),10天的Bitmap的内存开销约为120MB,内存压力不算太高。
此外,在实际使用时,最好对Bitmap设置过期时间,让Redis自动删除不再需要的签到记录以节省内存开销。
标签:bitcount,bitmap,a1,键值,内存,offset From: https://www.cnblogs.com/seamount3/p/17538666.html