若有收获,请记得分享和转发哦
在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时还要对集合中的数据进行统计排序。
常见的场景如下:
给一个 userId ,判断用户登陆状态;
两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数;
统计每天的新增与第二天的留存用户数;
统计网站的对访客(Unique Visitor,UV)量
最新评论列表
根据播放量音乐榜单
通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。
所以,我们必须要选择能够非常高效地统计大量数据(例如亿级)的集合类型。
如何选择合适的数据集合,我们首先要了解常用的统计模式,并运用合理的数据来解决实际问题。
四种统计类型:
二值状态统计;
聚合统计;
排序统计;
基数统计。
本文将用到 String、Set、Zset、List、hash 以外的拓展数据类型 Bitmap
、HyperLogLog
来实现。
文章涉及到的指令可以通过在线 Redis 客户端运行调试,地址:https://try.redis.io/,超方便的说。
所以,可以专门部署一个集群用于统计,让它专门负责聚合计算,或者是把数据读取到客户端,在客户端来完成聚合统计,这样就可以规避由于阻塞导致其他服务无法响应。