一、应用
说明:用String类型作为底层数据结构实现的一种统计二值状态的数据类型
位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们称之为一个索引)。
Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32 = 4294967296)
用于状态统计,Y、N类似AtomicBoolean
应用场景
用户是否登陆过Y、N,每日签到
电影、广告是否被点击播放过
打卡上下班,签到统计
二、由0和1状态表现的二进制位的bit数组
三、案例
setbit
setbit key offset value
setbit键 偏位移 只能0或者1
Bitmap的偏移量是从零开始算的
getbit
getbit key offset
strlen
统计字节数占用多少
bitcount
全部键里面含有1的有多少个
bitop
连续2天都签到的用户
加入某个网站或者系统,它的用户有1000W,做个用户id和位置的映射
比如0号位对应用户id:uid-092iok-lkj
比如1号位对应用户id:uid-7388c-xxx
setbit和getbit案例说明
按照天
应用场景
一年365天,全年天天登录占用几个字节
按照年
按年去存储一个用户的签到情况服务器托管网,365 天只需要 365 / 8 ≈ 46 Byte,1000W 用户量一年也只需要 44 MB 就足够了。
假如服务器托管网是亿级的系统,
每天使用1个1亿位的Bitmap约占12MB的内存(10^8/8/1024/1024),10天的Bitmap的内存开销约为120MB,内存压力不算太高。
此外,在实际使用时,最好对Bitmap设置过期时间,让Redis自动删除不再需要的签到记录以节省内存开销。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
动动发财的小手,点个赞吧! 数据工程构成了数据科学过程的很大一部分。在 CRISP-DM 中,这个过程阶段称为“数据准备”。它包括数据摄取、数据转换和数据质量保证等任务。在本文[1]章中,我们使用 ChatGPT 和 Python 解决了典型的数据工程任务。通…