Bitmap

简介: 【10月更文挑战第7天】

Bitmap

Bitmap是一种基于String类型的特殊数据结构,使用位(bit)来表示信息,每个位可以是0或1。适合快速操作大量独立开关状态的场景,如状态监控、计数器等。

用法:

  1. SETBIT key offset value:对key指定的offset位置设置指定的值,value可以是0或1
  2. GETBIT key offset:获取key在指定offset位置的值
  3. BITCOUNT key [start end]:计算key中值为1的数量,可以计算范围里的位值
  4. BITOP operation destkey key [key ...] :对一个或多个键进行位操作(AND,OR,XOR,NOT)结果储存在destkey里

业务场景

状态监控

可以用来监控大量状态,如用户在线状态、设备状态等

具体案例:

在大型游戏平台里,需要实时监控成千上万的玩家是否在线。使用Bitmap可以高效记录每个玩家的在线状态

优点:

  1. 空间效率:使用位来存储状态,极大地节省了存储空间
  2. 快速读取和更新状态
  3. 批量操作:可以对多个状态位执行批量操作

    功能开关
    可以控制功能开关,如AB测试、特性发布等

具体案例:

在SaaS里,需要对新功能进行AB测试,只对部分用户开放,使用Bitmap可以快速控制哪些用户可以访问新功能

优点:

  1. 可以快速开启或关闭特定用户的访问权限
  2. 易于扩展

    注意事项:

  • Bitmap操作时原子性的,适用于并发场景
  • Bitmap底层使用String类型实现,最大容量也是512MB
  • 位操作可以快速执行,但是要注意内存和性能限制
  • 设计Bitmap应用时,要考虑数据的稀疏性,避免不必要的内存浪费

概率数据结构,用于统计集合里唯一元素的数量,使用固定量的空间,通常为2KB,可以提供非常接近准确值的基数估计

用法:

  1. PFADD key element [element...] :向key对应的HyperLogLog中添加元素,如果key不存在,创建新的HyperLogLog
  2. PFCOUNT key:获取key对应的HyperLogLog中的基数,即唯一元素的数量
  3. PFMERGE destkey sourcekey [sourcekey ...]:将多个HyperLogLog集合合并到一个里,结果放到destkey 里
目录
相关文章
|
5月前
|
存储 算法 Java
BitMap介绍
BitMap介绍
29 0
|
5月前
|
开发框架 .NET C#
详细解读Bitmap的优化
详细解读Bitmap的优化
35 0
使用Bitmap.createBitmap遇到的问题
使用Bitmap.createBitmap遇到的问题
445 0
|
Java Android开发
Bitmap详解
Bitmap的分析与使用 Bitmap的创建 创建Bitmap的时候,Java不提供new Bitmap()的形式去创建,而是通过BitmapFactory中的静态方法去创建,如:BitmapFactory.
2100 0
|
存储 编解码 API
|
存储 算法 程序员
Bitmap 算法
位图算法,内存中连续的二进制位bit,用于对大量整型数据做去重和查询。 举个例子,给定一块长度是10bit的内存空间,依次插入4,3,2,1,怎么存储? 1. 给定长度是10的bitmap,每一个bit位分别对应着从0到9的10个整型数。
1534 0
|
Java Android开发
Bitmap.recycle引发的血案
从Bitmap.recycle说起 在Android中,Bitmap的存储分为两部分,一部分是Bitmap的数据,一部分是Bitmap的引用。
1376 0
|
Java
Bitmap获取图片内存溢出
从本地sd卡获取图片内存溢出解决方法 public Bitmap getBitmap(String path) { File file = new File(path); Bitmap resizeBmp = null; BitmapFactory.
847 0