Jedis bitmap

歷精圖治發表於2018-11-10

點陣圖

set bit key offset value  #給點陣圖指定索引設定值 
setbit unique:users:2016-04-05 0 1  
0 
setbit unique:users:2016-01-05 5  1  
0 
setbit hello 7  
1
setbit hello 7 1 
0
get hello 
cig 

getbit

getbit key offset 
#獲取點陣圖指定索引的值  
getbit unique :users:2016-04-05 8  
integer 0 
getbit unique:users:2016-04-05 19 
1 

bitcount

bitcount key[start end]
#獲取點陣圖指定範圍 start到end ,單位為位元組,如果不指定就是獲取全部位置為1個個數 
 bitcount unique:users:2016-04-05 
 interger 5 

bitop

bitop op destkey key[key]
做多個bitmap的and  or  not  xor 操作並將結果存放在destkey中 
#求兩個點陣圖的並集  

bitpos

bitpos key targetBt
計算點陣圖指定範圍,start到end,單位為位元組,如果不指定就是獲取全部 第一個偏移量對應的值等於targetBit的位置

bitpos unique:users:2016-04-04 1  
1 
bitpos unique:users:2016-04-04 0 1 2  
8

獨立使用者統計

1:使用set和bitmap
2:1億使用者,5千萬獨立

資料型別 每個發userid佔用空間 需要儲存的使用者量 全部記憶體量
set 32位 50,000,000 32位*50,000,000= 200M
set 32位 100,000,000 1位*100,000,000 = 12.5M

使用經驗

1:type=string ,最大512M
2:注意setbit時的偏移量 ,可能有較大好事