首页 > 数据库 ><<Redis 核心技术与实战>> 小记随笔 —— 有一亿个keys要统计,应该用哪种集合?

<<Redis 核心技术与实战>> 小记随笔 —— 有一亿个keys要统计,应该用哪种集合?

时间:2023-01-05 22:34:48浏览次数:34  
标签:Set keys 用户 Bitmap 签到 场景 亿个 统计 小记

聚合统计

应用场景

统计手机 App 每天的新增用户数和第二天的留存用户数

解决方案

由于Set 类型可以实现并集、交集、差集等能力。所以设计一个 Set 存所有的用户 Id, 并且每天新建一个 Set 存当天访问的用户Id,然后通过并集、交集、差集的计算得出结果。
方案关键点:这些 Set 的计算比较容易耗资源,所以最好是在 Redis 集群的一个从库来做这些计算,不要堵塞主 Redis 的业务。

排序统计

应用场景

最新评论列表包含了所有评论中的最新留言

解决方案

  • List 有序集合
    可以按照插入顺序来实现。
  • Sorted Set 可以根据元素的权重来排序
    可以把插入的时间作为权重来实现。

二值状态统计

应用场景

如果记录了 1 亿个用户 10 天的签到情况,你有办法统计出这 10 天连续签到的用户总数吗?

解决方案

使用 Bitmap 来实现存储二值状态。

  • 支持按位设置、读取
  • 支持统计1的总数
  • 支持位与、位或等运算
    每一天创建一个 Bitmap,每一位表示一个用户是否签到,1表示签到,0表示未签到,然后把10天对应的 Bitmap 做位与运算,然后统计下计算结果的 Bitmap 签到的总和即可。

基数统计

应用场景

统计网页一天的 UV,这个场景的特点就是每个用户一天中重复登录几次也只会统计一次。

解决方案:

  • 使用 Set 或者 Hash 类型可以实现,但是很占用内存。
  • 使用 HyperLogLog 类型,但是这个算法是基于概率统计完成的,所以会有一定的误差,标准误差率是0.81%,但是很节省内存,仅12KB

标签:Set,keys,用户,Bitmap,签到,场景,亿个,统计,小记
From: https://www.cnblogs.com/BlueMountain-HaggenDazs/p/17029018.html

相关文章

  • <<Redis 核心技术与实战>> 小记随笔 —— GEO
    应用场景用于描述LBS(Location-BasedService)的数据结构,能够存储对象的经纬度信息,并且可以进行指定经纬度点指定距离范围内的查询、排序等能力。类型介绍是一种自定......
  • 转 Git配置SSH Keys步骤
    Git配置SSHKeys步骤 Git配置SSHKeys步骤使用教程1.若是首次安装使用git,先配置用户名称和邮箱(如果有就不需要配置)打开GitBash,输入gitconfig--globaluser.name......
  • Day2 Java基础小记
    Java基础小记Java特性和优势简单性面向对象可移植性性高性能分布式动态性多线程安全性健壮性Java为什么能够成功?Java三大版本JavaSE:标准版(桌面程序,控......
  • @NonNull 注解小记——非空判断的触发时机区别
    背景@NonNull:关于这个注解,lombok的一个注解,可以加在方法-入参,或构造函数上。本以为加了这个参数,会自动判断(编译阶段)会判断,但发现并不是这个意思。因为在编译的时候,传......
  • 耳分解小记
    在有向(强)连通图中,定义“耳”为一条简单路径/一个简单环\(a_1\toa_2\to\cdots\toa_k\),使得删去所有这些边之后不影响除了\(a_2,a_3,\dots,a_{k-1}\)的点的(强)连通性。......
  • Webpack3.x升级至 4.x 小记
    Webpack3.x升级至4.x小记 近期项目部署遇到点问题,需要升级webpack版本,特此整理一小记,记录升级过程中的依赖包及报错处理。本次升级的依赖包及对应版本对照表:np......
  • nginx使用小记
    中文wiki社区:http://wiki.codemongers.com/NginxChs一.nginx安装1.下载nginx:http://sysoev.ru/nginx/download.html(官方下载页面)wgethttp://sysoev.ru/nginx/nginx......
  • Mysql常见注意事项小记
    Mysql常见注意事项小记1.排序问题正常如果按照某字段升序排列,空值会排到有值的前面;如果逆序排序空值排在最后。有时候我们需要该字段为空的行数据要排到最......
  • Error(15) 解决 sshd: no hostkeys available -- exiting.
     Error(15)解决sshd:nohostkeysavailable--exiting.(31条消息)Error(15)解决sshd:nohostkeysavailable--exiting._郑清的博客-CSDN博客执行sudoservi......
  • 【学习小记】狄利克雷卷积+杜教筛
    Preface这东西分明就是玄学暴力用来求简单的数论函数的前缀和,像φ,μ这类的东西当然,约数和,约数个数之类的也是可以的Text数论函数是指定义域是整数,陪域是复数的函数Dirich......