1. 程式人生 > >大資料量統計神器bitmap詳解

大資料量統計神器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其他應用場景:快速排序,快速查詢,去重,統計