<<Redis 核心技术与实战>> 小记随笔 —— 有一亿个keys要统计,应该用哪种集合?
2023-09-14 09:11:25 时间
聚合统计
应用场景
统计手机 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
相关文章
- 【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
- Redis中强大的无序集合(redis无序集合)
- 如何在Win7上安装Redis(win7安装redis)
- 高效存储:Redis内存数据库(redis内存数据库)
- 统计精准追踪: 基于Redis的访问次数统计(redis访问次数)
- 解析基于Redis的域名解析解决方案(redis 域名)
- Redis集合实现:快速和灵活地管理数据(redis集合实现)
- 鲁班学院突破Redis面试考验(鲁班学院redis面试)
- Redis中存储的统计数据可靠可信(统计结果放入redis)
- 统计Redis碰撞次数如何提升性能(统计redis碰撞次数)
- 统计分析Redis中大Key的性能指标(统计redis中大key)
- 重塑集群掌控删除 Redis 节点(删除redis 集群节点)
- 使用Redis统计数据灵活高效可靠(使用redis做统计)
- 命令行编译与安装Redis(命令编译和安装redis)
- 构建Redis主从节点启动全新的可用系统(启动redis的主从节点)
- 取消Redis服务器配置的密码保护(取消redis的密码)
- 无需购买,轻松使用Redis(redis需要买吗)
- 红色传奇解决高并发的Redis集群配置(redis集群高并发配置)
- Redis集合实现版本控制(redis集合版本化)
- Redis集合的查询大招到底是什么(redis集合查询命令)
- PHP编程实现Redis集合操作(redis集合操作php)
- Redis集合持久化技术探索(redis 集合持久化)
- Redis实现自动重定向次数统计(redis 重定向次数)
- Redis远程连接遭遇拒绝(redis远程拒绝连接)
- 用Redis管理记录条数从查询到统计(redis记录条数查询)
- 研究Redis如何获取集合数量(redis 获取集合数量)
- Redis快速缓存管理神器(redis能用缓存吗)
- 优化深入浅出如何优化Redis连接数大小(redis连接数大小如何)
- Redis读写分离与事务实现最佳性能(redis读写分离和事务)