只有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天,月活就是本月的全部数据图的并集