首页 > 其他分享 >bitmap

bitmap

时间:2023-07-09 14:13:13浏览次数:27  
标签:bitcount bitmap a1 键值 内存 offset

bitmap

使用情景

用户签到,打卡,电影广告是否被点击过

docker进入redis

docker exec -it <container_name> redis-cli

常用指令

  1. setbit 键值 offset(从0开始) 0|1
  2. getbit 键值 offset
  3. strlen 键值 (统计的是字节数占用多少:例如我们只SETBIT a1 0 1 和SETBIT a1 1 1,strlen a1 结果为1,但是SETBIT a1 8 1后就变成了2(原理是其实里面使用的是Byte(8位)))
  4. bitcount 键值:统计bitmap里面有多少个1,
    bitcount升级版:bitcount 键值 开始offset 结束offset(统计在这个范围的位数中有几位1)
  5. bitop 可以结合and or ...来使用(可以实现多个bitmap进行与或非操作)
    bitop destkey a1 a2

额外需注意

按年去存储一个用户的签到情况,365 天只需要 365 / 8 ≈ 46 Byte,1000W 用户量一年也只需要 440MB 就足够了。

假如是亿级的系统,

每天使用1个1亿位的Bitmap约占12MB的内存(10^8/8/1024/1024),10天的Bitmap的内存开销约为120MB,内存压力不算太高。

此外,在实际使用时,最好对Bitmap设置过期时间,让Redis自动删除不再需要的签到记录以节省内存开销。

标签:bitcount,bitmap,a1,键值,内存,offset
From: https://www.cnblogs.com/seamount3/p/17538666.html

相关文章

  • Picture专成Bitmap并保存到sd卡
    Bitmapb=Bitmap.createBitmap(picture.getWidth(),picture.getHeight(),Bitmap.Config.ARGB_8888);Canvasc=newCanvas(b);picture.draw(c);FileOutputStreamfos=null;try{......
  • redis学习九:数据类型命令及落地运用 (bitmap)
    redis位图bitmap:由0和1状态表现得二进制位的bit数组需求:用户是否登录过Y,N,比如京东每日签到送豆;电影,广告是否被点击播放过钉钉打卡上下班大厂签到必备是什么:用于状态记录,Y,N不用去mysql读写。1.bitmap的偏移量从0开始,setbitkey0/1设置对应下标值图中就是1000010,对应as......
  • 使用wx.BitmapButton添加一个位图作为按钮的图标
    wx.BitmapButton是wxPython中的一个类,表示一个具有图像的按钮。它继承了wx.Button类,并添加了一个位图作为按钮的图标。wx.BitmapButton的构造函数如下:wx.BitmapButton.__init__(self,parent,id=wx.ID_ANY,bitmap=wx.NullBitmap,pos=wx.DefaultPosition,size=wx.Defa......
  • Redis 的bitmap byte转位bit
    bitmap我们知道redis的bitmap本身不是一种数据结构,底层实际上依靠字符串进行存储,可以借助字符串进行位操作,由于redis的字符串最大内存位512MB,所以bitmap的bit位也是有上限的,8*1024*1024*512=2^32,由于C语言字符串的末尾都有一位分隔符,所以bitmap存储的实际上限位2^32-1......
  • 关于bitmap
    当我们需要统计大量随机数的生成情况时,使用HashMap以随机数作为键可能会导致内存消耗过大。每个键值对都需要额外的内存来存储键和值之间的关联,而一个整型随机数通常需要占用4个字节(32位)。在处理大数据量时,这种内存开销可能会变得不可承受。而BitMap用位来标记随机数是否......
  • 【≅Redis】BitMap类型介绍
    BitMap(2.2版新增)Bitmap,即位图,是一串连续的二进制数组(0和1),可以通过偏移量(offset)定位元素。BitMap通过最小的单位bit来进行0|1的设置,表示某个元素的值或者状态,时间复杂度为O(1)。由于bit是计算机中最小的单位,使用它进行储存将非常节省空间,特别适合一些数据量大且使用二值统计......
  • GDI-GetBitmapBits获取兼容位图的数据
    设备独立位图和兼容位图:设备独立位图(Device-IndependentBitmap,简称DIB)和兼容位图(CompatibleBitmap,简称DDB)是两种不同的位图类型。DIB是一种独立于设备的位图格式,它的像素格式与设备无关,可以在不同分辨率和颜色深度的设备上显示。DIB可以通过使用位图信息头和像素数组来存储图......
  • Android Bitmap内存溢出问题解释
    Android平台在图片处理方面经常会出现OOM的问题,在去年开发的一个项目中,我也一直被这个问题所困扰,在这方面也搜集了许多的资料,今天仅仅针对Android平台的Bitmap说事儿,今后再对内存的问题做详细的探讨,android平台对图片解码这块确实设置的有内存上限,在解码Bitmap的时候android平台会......
  • redis之哈希类型-列表类型-集合类型-有序集合-慢查询-pipeline-发布订阅-Bitmap位图-H
    目录redis之哈希类型-列表类型-集合类型-有序集合-慢查询-pipeline-发布订阅-Bitmap位图-HyperLogLog-GEO地理位置昨日内容回顾今日内容详细1哈希类型2列表类型3集合类型4有序集合5慢查询6pipeline与事务7发布订阅8Bitmap位图9HyperLogLog10GEO地理位置redis之哈希类型......
  • 哈希类型 列表类型 集合类型 有序集合 慢查询 pipeline与事务 发布订阅 Bitmap位图 Hy
    昨日回顾#1redis介绍 -特性#速度快:10wops(每秒10w读写),数据存在内存中,c语言实现,单线程模型#持久化:rdb和aof#多种数据结构:5大数据结构BitMaps位图:布隆过滤器本质是字符串HyperLogLog:超小内存唯一值计数,12kbHyperLogLog本质是......