大数据BitMap的实现
Posted 兔子爱读书
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据BitMap的实现相关的知识,希望对你有一定的参考价值。
数据处理需求
假设有一个4G的Id数据,和一个800M的Id数据,要互相遍历,时间开销很大。
采用比特图解决
比特图能成功将4G数据压缩到1-5k左右。
内存占用
如果一条数据的存放地址用32 比特(bit)来表示 ,等于4 字节(byte)内存;那么一亿条数据,要占用一亿个地址,等于占用4亿字节的内存,等于381MB (1MB=1024KB=1024*1024B)。——可接受
如果一条数据的存放地址用64 比特(bit)来表示 ,等于8字节内存;那么一亿条数据,要占用762MB内存。
Redis限制
Redis中的位图(bitmap)属于 string 数据类型,一个字符串类型的值最多能存储 512 MB 的内容,每个字符串由多个字节组成,每个字节又由 8 个 Bit 位组成。位图结构正是使用“位”来实现存储的,它存储上限为2^32 。
以上是关于大数据BitMap的实现的主要内容,如果未能解决你的问题,请参考以下文章
Redis使用BitMap用户签到统计BitMap解决缓存击穿方案 及 UV(HyperLogLog) 统计页面访问量 与 独立访问量