redis使用场景之Bitmaps---应用于信息统计状态

今天我们来学习一下bitmaps,bitmaps这个“数据结构”可以实现对位的操作。bitmaps本身不是一种数据结构,实际上就是字符串,但是它可以对字符串的位进行操作。

Bitmaps类型的基础操作

  • 获取指定key对应偏移量上的bit值
getbit key offset
  • 设置指定key对应偏移量上的bit值,value只能是1或0
setbit key offset value

注意:如果偏移量比较大,前面的位都是置0,所以我们可以减去一个公共数

Bitmaps类型的扩展操作

  • 对指定key按位进行交、并、非、异或操作,并将结果保存到destKey中
bitop op destKey key1 [key2...]

and 交

or 并

not 非

xor 异或

  • 统计指定key中1的数量
bitcount key [start end]

业务场景

电影网站

1、统计每天某一部电影是否被点播

2、统计每天有多少部电影被点播

3、统计每周/月/年有多少部电影被点播

4、统计年度哪部电影没有被点播

解决方案

针对上面4个问题一一解答

1、假设有一部电影名称为《末日宣言》,其id为5。

01010011

id:5

offset:4

0

取得偏移量为4的位为0,所以该部电影没被观看过

2、如下,位数代表id,位数状态为1,代表该电影被看过,为0,代表未被看过

第一天:01010011

第二天:11010111

如果想要统计每天有多少部电影被看过,只需统计某天为1的数量即可

3、统计每周/月/年有多少部电影被点播,只需按天求或即可

      0101001

or  1101100


      1101101

4、统计年度哪部电影没有被点播

下面我们通过演示进行讲解

执行如下命令:

setbit 20200501 0 1
setbit 20200501 1 1
setbit 20200501 2 1
setbit 20200501 3 1
setbit 20200502 0 1
setbit 20200502 5 1

说明:20200501为日期 后面是电影编号,再后面是值1,也就是代表被看过

查看2020年5月1日所有观看电影数

查看1号和2号被点播的电影数量

最后说一下:bitmaps只是用来对数据进行统计,并不是存储用来存储数据的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值