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 里
目录
相关文章
|
1月前
|
存储 Java
Bitmap位图(Java实现)
本文介绍了使用Java实现一个简单的Bitmap,通过自定义byte数组存储数据,提供put和exist方法分别用于插入数据和查询数据是否存在。Bitmap利用位操作高效地管理大量布尔值,适用于空间优化的场景。代码中详细解释了位图的核心原理、方法实现及边界检查。后续计划探讨位图在海量数据去重中的应用及JDK BitSet源码分析。
82 7
|
7月前
|
存储 算法 Java
BitMap介绍
BitMap介绍
37 0
|
7月前
|
开发框架 .NET C#
详细解读Bitmap的优化
详细解读Bitmap的优化
42 0
|
7月前
|
API Android开发
55. 【Android教程】位图:Bitmap
55. 【Android教程】位图:Bitmap
84 0
使用Bitmap.createBitmap遇到的问题
使用Bitmap.createBitmap遇到的问题
466 0
|
Java Android开发
Bitmap详解
Bitmap的分析与使用 Bitmap的创建 创建Bitmap的时候,Java不提供new Bitmap()的形式去创建,而是通过BitmapFactory中的静态方法去创建,如:BitmapFactory.
2110 0
|
存储 编解码 API
|
存储 算法 程序员
Bitmap 算法
位图算法,内存中连续的二进制位bit,用于对大量整型数据做去重和查询。 举个例子,给定一块长度是10bit的内存空间,依次插入4,3,2,1,怎么存储? 1. 给定长度是10的bitmap,每一个bit位分别对应着从0到9的10个整型数。
1540 0

热门文章

最新文章

下一篇
开通oss服务