redis bitmap

只有2個顏色,黃色和透明,1表明黃色,0表明沒有顏色,是否是,只要你找到那個點,看一下是1仍是0就知道顏色了!測試

 

bitmap在統計中的應用:
下面,我將講解如何用bitmap原理來存儲日活數據
思路:把每一天,當作一個圖,誰訪問了,就在哪一個點上,設置1

需求:記錄天天,某個userid 爲 22的用戶訪問了某個網頁,網頁名爲 pagehelloword,這樣經過pagehelloword::Ymd 能夠記錄每一天的數據圖
 it

下面記錄了 22這個userid在 20160502 訪問了pagehelloword
setbit    pagehelloword::20160502     22  1
 原理

咱們能夠多生成幾個測試數據
setbit    pagehelloword::20160502      23 1
setbit    pagehelloword::20160502     24  1
setbit    pagehelloword::20160502     25  1
setbit    pagehelloword::20160502      26  1map

那麼次數,咱們假如想看一下,今天日活多少了,就是有多少人訪問了
怎麼獲得這些日活數據呢?
方法

bitcount 命令能夠計算某個bitmap有多少的1
bitcount pagehelloword::20160502  
(integer) 5
有5我的訪問了im

===============================統計

記錄留存,留存率
日期走到了5月3號,那麼這一天假若有這些userid訪問了pagehelloword,咱們一樣記錄一下
setbit    pagehelloword::20160503    25  1
setbit    pagehelloword::20160503    22  1
setbit    pagehelloword::20160503    24  1
setbit    pagehelloword::20160503    26  1
setbit    pagehelloword::20160503    27  1
setbit    pagehelloword::20160503    28  1
setbit    pagehelloword::20160503    29  1數據

咱們一樣能夠上面的方法,計算一天5月3號的日活
bitcount pagehelloword::20160503
(integer) 7
日活爲7top

那麼留存有多少呢,就是昨天訪問的,今天又訪問了的人,佔比爲多少呢
bitop 能夠對多個bitmap進行與或運算
咱們取得 5月2號,和5月3號訪問人的交集,即重複訪問的人word

BITOP AND pagehelloword::20160502and20160503 pagehelloword::20160502 pagehelloword::20160503

咱們用 pagehelloword::20160502and20160503 記錄了 2號和3號的並集
如今咱們查看一下,有多少人次日又重複訪問了,一樣是bitcount命令
bitcount pagehelloword::20160502and20160503
(integer) 4
結果是 4我的
那麼咱們就能夠計算出 第二天留存 即爲4
第二天留存率爲 4/5*100% = 80% 

=================================

3.統計第二天老用戶比例
仍是上面的表格,咱們獲得老用戶爲 4 今天的全部用戶爲7
比例爲 4/7*100% 

 

=================================

4.統計周活,月活躍用戶
BITOP or 並集
咱們這裏簡化一下,統計連續2天的活躍用戶

BITOP or pagehelloword::20160502or20160503 pagehelloword::20160502 pagehelloword::20160503

----

pagehelloword::20160502or20160503就是 5月2號,3號連續2天的總的活躍用戶 咱們用 bitcount pagehelloword::20160502or20160503 (integer) 8 得出活躍用戶爲8人 若是周活,就是連續7天,月活就是本月的全部數據圖的並集

相關文章
相關標籤/搜索