前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis 学习(13)-- BitMap

redis 学习(13)-- BitMap

作者头像
希希里之海
发布2019-06-03 08:36:58
5520
发布2019-06-03 08:36:58
举报
文章被收录于专栏:weixuqin 的专栏weixuqin 的专栏

BitMap

什么是 BitMap

BitMap,即位图,其实也就是 byte 数组,用二进制表示,只有 0 和 1 两个数字。

如图所示:

重要 API

命令

含义

getbit key offset

对key所存储的字符串值,获取指定偏移量上的位(bit)

setbit key offset value

对key所存储的字符串值,设置或清除指定偏移量上的位(bit)1. 返回值为该位在setbit之前的值2. value只能取0或13. offset从0开始,即使原位图只能10位,offset可以取1000

bitcount key [start end]

获取位图指定范围中位值为1的个数如果不指定start与end,则取所有

bitop op destKey key1 [key2...]

做多个BitMap的and(交集)、or(并集)、not(非)、xor(异或)操作并将结果保存在destKey中

bitpos key tartgetBit [start end]

计算位图指定范围第一个偏移量对应的的值等于targetBit的位置1. 找不到返回-12. start与end没有设置,则取全部3. targetBit只能取0或者1

演示

应用场景

统计每日用户的登录数。每一位标识一个用户ID,当某个用户访问我们的网页或执行了某个操作,就在bitmap中把标识此用户的位设置为1。

这里做了一个 使用 set 和 BitMap 存储的对比。

场景1:1 亿用户,5千万独立

数据类型

每个 userid 占用空间

需要存储的用户量

全部内存量

set

32位(假设userid用的是整型,实际很多网站用的是长整型)

50,000,000

32位 * 50,000,000 = 200 MB

BitMap

1 位

100,000,000

1 位 * 100,000,000 = 12.5 MB

一天

一个月

一年

set

200M

6G

72G

BitMap

12.5M

375M

4.5G

场景2:只有 10 万独立用户

数据类型

每个 userid 占用空间

需要存储的用户量

全部内存量

set

32位(假设userid用的是整型,实际很多网站用的是长整型)

1,000,000

32位 * 1,000,000 = 4 MB

BitMap

1 位

100,000,000

1 位 * 100,000,000 = 12.5 MB

通过上面的对比,我们可以看到,如果独立用户数量很多,使用 BitMap 明显更有优势,能节省大量的内存。但如果独立用户数量较少,还是建议使用 set 存储,BitMap 会产生多余的存储开销。

使用经验

  1. type = string,BitMap 是 sting 类型,最大 512 MB。
  2. 注意 setbit 时的偏移量,可能有较大耗时
  3. 位图不是绝对好。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BitMap
    • 什么是 BitMap
      • 重要 API
        • 演示
          • 应用场景
            • 使用经验
            相关产品与服务
            对象存储
            对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档