中等 · 高频 4/5

MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据?

MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据? 不能只背概念。要结合表结构、数据量、索引、执行计划、事务边界和慢查询指标说明。

简短答案

MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据? 不能只背概念。要结合表结构、数据量、索引、执行计划、事务边界和慢查询指标说明。

详细解析

MySQL 查询链路架构图
MySQL 查询链路:面试回答建议先按链路讲清组件职责,再补充失败场景、监控指标和取舍。

MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据? 的好回答需要有“链路感”:先说明它解决什么问题,再说明关键组件如何协作,最后说明异常和容量上来后怎么兜底。

回答主线

  • 先说表结构、数据量、SQL 条件、索引设计和执行计划,不要只背“最左前缀”。
  • 索引要结合选择度、回表成本、排序分组、写入成本和维护成本判断。
  • 事务题要讲隔离级别、MVCC、锁、死锁、幻读和业务一致性。

项目落地怎么讲

  • 把 MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据? 放进真实调用链路里:入口流量从哪里来,关键依赖是什么,失败时如何降级。
  • 补充可观测指标:QPS、RT、错误率、资源占用、队列长度、缓存命中率、慢查询或 GC 停顿。
  • 说明验证方式:单元测试、压测、灰度、回滚预案、告警阈值和复盘动作。

面试官真正想听什么

  • 你是否理解底层机制,而不是只背名词。
  • 你是否能根据业务目标做取舍,而不是套固定答案。
  • 你是否有线上风险意识,知道失败场景和监控指标。

面试回答模板

我会先给结论:MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据? 不能只背概念。要结合表结构、数据量、索引、执行计划、事务边界和慢查询指标说明。

然后按三段展开:第一,核心链路和关键机制;第二,项目里怎么落地,包括容量、并发、一致性和监控;第三,边界风险,例如失败重试、降级、数据不一致或资源耗尽。最后用压测数据、线上指标或故障复盘证明这个方案是有效的。

代码示例

EXPLAIN SELECT id, user_id, status
FROM orders
WHERE user_id = ? AND status = ?
ORDER BY created_at DESC
LIMIT 20;

易错点

  • 只背结论,不解释为什么这样设计。
  • 忽略边界条件,例如数据规模、并发量、延迟、一致性和失败重试。
  • 没有结合项目经验,回答听起来像教材摘要。

常见追问

MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据? 面试时先答什么?

先给结论,再按链路、机制、项目落地、风险兜底和监控指标展开。

MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据? 常见追问有哪些?
  • MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据? 在线上出问题时,你会先看哪些指标?
  • 如果流量或数据量扩大十倍,这个方案需要怎么调整?
  • 失败重试、幂等、降级和告警分别怎么设计?
  • 如何通过 explain 判断索引是否真正生效?
MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据? 怎么避免回答太空?

至少补充一个真实链路、一个关键指标、一个失败场景和一个兜底方案。

相关题目

继续刷题