bitmap
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自动删除不再需要的签到记录以节省内存开销。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通