redis特殊数据类型-bitmap

BitMap

  • 通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存空间。

场景

一个网站用户签到,很多个用户,一年有365 天,每天都记录,数据量会非常大,统计比较困难。考虑到这种场景,使用 bitmap 节省很多空间。

命令

setbit: 保存
getbit: 获取
bitcount: 统计

应用

  • 模拟一个一周打卡情况

key 用户名

127.0.0.1:6379> setbit xm 1 1
0
127.0.0.1:6379> setbit xm 2 1
0
127.0.0.1:6379> setbit xm 3 0
0
127.0.0.1:6379> setbit bmap 4 1
0
127.0.0.1:6379> setbit xm 5 0
0
127.0.0.1:6379> setbit xm 6 1
0
127.0.0.1:6379> setbit xm 7 1
0
127.0.0.1:6379> 
127.0.0.1:6379> getbit xm 3
0
127.0.0.1:6379> getbit xm 6
1
127.0.0.1:6379> bitcount xm # 统计值为 1个数
4
127.0.0.1:6379> 
  • 模拟用户活跃度

key: 时间,
offset:用户id
value: 活跃情况

127.0.0.1:6379> setbit 20200808 1 1
0
127.0.0.1:6379> setbit 20200808 2 1
0
127.0.0.1:6379> setbit 20200808 3 0
0
127.0.0.1:6379> setbit 20200808 4 1
0
127.0.0.1:6379>
127.0.0.1:6379> setbit 20200809 1 0
0
127.0.0.1:6379> setbit 20200809 2 1
0
127.0.0.1:6379> setbit 20200809 3 1
0
127.0.0.1:6379> 
127.0.0.1:6379> setbit 20200809 4 1
0
127.0.0.1:6379>  # 统计时间内都有活跃用户 20200808{1,2,4}  20200809{2,3,4}
127.0.0.1:6379> bitop and active 20200808 20200809
1
127.0.0.1:6379> bitcount active # 统计时间被都有活跃用户个数
2
127.0.0.1:6379> bitop or totle_active 20200808 20200809 # 统计两天一共活跃用户
1
127.0.0.1:6379> 
127.0.0.1:6379> 
127.0.0.1:6379> bitcount totle_active # 统计时间内有过活跃用户个数
4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值