redis:存储与计算:日活,留存,老用户等统计数据

    xiaoxiao2021-12-04  41

    

    一.实战之前,先介绍一个概念bitmap

    这个bitmap有啥用?

    看这副图片,假如更精简的话,只有2个颜色,黄色和透明,1代表黄色,0代表没有颜色,是不是,只要你找到哪个点,看一下是1还是0就知道颜色了呢

    二.bitmap在统计中的应用

    下面,我将讲解如何用bitmap原理来存储日活数据

    思路:把每一天,当做一个图,谁访问了,就在哪个点上,设置1

    记录日活

    需求:记录每天,某个userid 为 22的用户访问了某个网页,网页名为 pagehelloword

    这样通过pagehelloword::Ymd 可以记录每一天的数据图

    下面我计算了 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  1

    那么次数,我们假如想看一下,今天日活多少了,就是有多少人访问了

    怎么得到这些日活数据呢?

    bitcount 命令可以计算某个bitmap有多少的1

    bitcount pagehelloword::20160502  

    (integer) 5

    非常好,我们有5个人访问了,数据准确吗,我们查看一下,之前我们确实记录了5个数据,yes,数据非常准

    2.记录留存,留存率

    日期走到了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

    日活为7,比昨天提高了ye

    那么留存有多少呢,就是昨天访问的,今天又访问了的人,占比为多少呢

    bitop 可以对多个bitmap进行与或运算

    我们取得 5月2号,和5月3号访问人的交集,即重复访问的人

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

    转载请注明原文地址: https://ju.6miu.com/read-680223.html

    最新回复(0)