2.9 Redis数据类型_Bitmaps 🎉
...大约 2 分钟
2.9 Redis数据类型_Bitmaps 🎉
在计算机中,用二进制(位)作为存储信息的基本单位,1个字节等于8位。
例如 "abc" 字符串是由 3 个字节组成,计算机存储时使用其二进制表示,"abc"分别对应的ASCII码是97、98、99,对应的二进制是01100001、01100010、01100011,在内存中表示如下:
合理地使用位能够有效地提高内存使用率和开发效率。
Redis提供了Bitmaps这个 “数据结构” 可以实现对位的操作:
- setbit
设置Bitmaps中某个偏移量的值。
示例:redis中bitmaps可以用来统计用户信息,eg:活跃天数、打卡天数、登录天数
bitmaps位图,都是操作二进制来进行记录,就只有0和1两个状态
setbit zhangsan:3 1 1 # 往sign中添加数据,第1天打卡
setbit zhangsan:3 2 0 # 第2天未打卡
setbit zhangsan:3 3 1 # 第3天打卡
setbit zhangsan:3 4 0 # 第4天未打卡
setbit zhangsan:3 5 1 # 第5天打卡
setbit zhangsan:3 6 0 # 第6天未打卡
setbit zhangsan:3 7 1 # 第7天打卡
- getbit
获取Bitmaps中某个偏移量的值。如果偏移量未设置值,则也返回0。
getbit sign 1 # 获取第一天的打卡状态
- bitcount
统计字符串被设置为1的bit数量。一般情况下,给定的整个字符串都会被进行统计,可以选择通过额外的start和end参数,指定字节组范围内进行统计(包括start和end),0表示第一个元素,-1表示最后一个元素。
bitcount zhangsan:3 # 统计张三3月份所有打卡天数
- bitop
将多个bitmaps通过求交集/并集方式合并成一个新的bitmaps。
bitop and k3 k1 k2 # 通过求交集将k1 k2合并成k3
bitop or k3 k1 k2 # 通过求并集将k1 k2合并成k3
使用场景
- 活跃天数
- 打卡天数
- 登录天数
- 用户签到
- 统计活跃用户
- 统计用户是否在线
- 实现布隆过滤器
Powered by Waline v2.15.7