大数据量统计神器bitmap详解

  bitmap就是使用bit位来标识数据,一个bit具有两个值:0和1,正好可以标识true和false,8个bit组成一个byte,当统计大数据量数字集时具有运算快速,节省空间的优势

  应用场景:

  标识统计用户签到:

    一般情况下,用户id都是自增的数字主键,当数百万数千万用户量时,可以结合redis来快速标识统计,redis指令:SETBIT key offset value

    key:可以编辑包含当前日期的内容作为key

    offset:所谓的偏移量,可以设置为id值,即每个bit位对应着一个用户的状态

    value:只能设置0,1,以0和1来标示true和false

    redis查询指令:getbit key offset

  延伸:redis是使用二进制数据进行存储的,当set testbit a时,发出get testbit,输出"a"

    在ascii码表中,a对应的十进制数值是97,二进制数值为01100001

              当我们依次按照位数获取,getbit testbit 0-7,依次输出0,1,1,0,0,0,0,1

    当我们执行指令,setbit testbit 6 1,  setbit testbit 7 0,

    输入get testbit,输出为"b",b对应的十进制数值是98,二进制数值为01100010

    getbit testbit 0-7,依次输出0,1,1,0,0,0,1,0

    由此可知setbit,getbit本质是在操作key对应value的二进制数据,这也是为何节省空间的原因,因为本质上是我们操作的是一个二进制数字

  bitmap其他应用场景:快速排序,快速查询,去重,统计

posted @ 2018-12-05 17:00  小晓峰  阅读(2299)  评论(0编辑  收藏  举报