Redis 实战篇:巧用数据类型实现亿级数据统计

0da9bf79dbd75e5954554b87d908b7ef.png

若有收获,请记得分享和转发哦

在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时还要对集合中的数据进行统计排序。

常见的场景如下:

  • 给一个 userId ,判断用户登陆状态;

  • 两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数;

  • 统计每天的新增与第二天的留存用户数;

  • 统计网站的对访客(Unique Visitor,UV)量

  • 最新评论列表

  • 根据播放量音乐榜单

通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。

所以,我们必须要选择能够非常高效地统计大量数据(例如亿级)的集合类型。

如何选择合适的数据集合,我们首先要了解常用的统计模式,并运用合理的数据来解决实际问题。

四种统计类型:

  1. 二值状态统计;

  2. 聚合统计;

  3. 排序统计;

  4. 基数统计。

本文将用到 String、Set、Zset、List、hash 以外的拓展数据类型 BitmapHyperLogLog来实现。

文章涉及到的指令可以通过在线 Redis 客户端运行调试,地址:https://try.redis.io/,超方便的说。

6434646f4d17c9389f0b7b155b51e757.png

dd57b9663f97b4320f7be1726ad71c05.png

d054eb8a5609a54ec41a8dc6d57f9dae.png

1d38f897fb1ae530c6d6ae06f401855b.png

62ad18f8fa3622d155aa5f61afef1d84.png

fdbb25fbf0be7535f28393b630f5e8ca.png

95d170df59e5c9f1c7b03cf68e1f1e22.png

c22b5e63d70bbcc477a32b62364f7acc.png

6be29de7bfedd8880e85dcd7b0d024d7.png

473ecde36396bd4d91d3633ea5877dda.png

26b96f12b1a389b485d57713afd8abb8.png

0919c35f8f6594e1ccc37d2992174c3d.png

c91508b18104e89656907ed3007f285f.png

913998ec150c771250dd065446d84c59.png

f837ef3c5498c70dcda962aa54a18119.png

7094b4c692bb7b67970c6eed5f597f0d.png

99decd13337e449b8386e6b422ef0b61.png

所以,可以专门部署一个集群用于统计,让它专门负责聚合计算,或者是把数据读取到客户端,在客户端来完成聚合统计,这样就可以规避由于阻塞导致其他服务无法响应。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值