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