news 2026/5/10 21:16:16

面试官:只会 Redis?高并发下你的缓存架构怎么设计到极致?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试官:只会 Redis?高并发下你的缓存架构怎么设计到极致?

面试官抛出这个问题时,其实是在考察你是否只停留在“会用 Redis”,而是真正理解高并发场景下缓存体系的工程化设计——包括性能边界、热点防护、一致性取舍、高可用、成本等多个维度的权衡。

下面给出一个目前(2026年)互联网中大型/超大型系统里比较主流且能打到“极致”的缓存架构思路,从分层到细节逐步展开。你可以按这个框架去回答,基本能cover 90%+ 的追问点。

1. 整体架构分层(主流极致方案:三级/四级缓存)

客户端 → CDN(静态 + 部分动态边缘缓存) ↓ Nginx / API Gateway(L1 本地缓存 + Lua 热点防护) ↓ 应用层(L2 本地缓存:Caffeine / Guava Cache / EHCache) ↓ Redis 集群(L3 分布式缓存:Cluster / 多主分片 + Proxy) ↓ DB(MySQL / PolarDB / TiDB) + 最终一致性兜底
  • L0:CDN / 边缘缓存(图片、JS、HTML 片段、甚至部分 JSON 接口结果)
  • L1:Nginx 层本地缓存(openresty + shared dict / lua-resty-cache)或进程内缓存
  • L2:应用 JVM 内本地缓存(Caffeine 目前最主流)
  • L3:Redis(分布式共享缓存)

为什么多级而不是只用 Redis?
单机 Redis 再强(单线程模型下 IO 多路复用)也很难稳定超过 20–30w QPS(考虑大 value、热点、网络抖动后更低)。多级能把 80–95% 的请求挡在本地,Redis 只承接 5–20% 的穿透流量。

2. 读链路(Cache Aside + 多级 + 防穿透/击穿)

  1. 先查L2 本地缓存(Caffeine,expire + refreshAfterWrite)
  2. miss → 查L3 Redis
  3. miss → 查 DB → 回写 Redis → 回写本地缓存
  4. 热点防护(防止击穿/雪崩):
    • 本地缓存层面:Caffeine loadingCache + 同步加载(只让一个线程去加载,其他线程等待)
    • Redis 层面:setnx + 随机过期时间 + 热点 key 提前预热(或用分布式锁 + 看门狗)
    • 极端热点:Nginx 层 shared dict 做二级本地缓存一致性 hash 路由 + 本地缓存(但要配合熔断)

3. 写链路 & 一致性(最常被追问)

主流取舍(2025–2026 年大厂真实偏好):

一致性要求推荐方案延迟复杂度适用场景
最终一致性(主流)Cache-Aside +先写 DB → 延迟双删商品详情、用户资料、推荐
强一致性先删缓存 → 写 DB → 读 DB 回写缓存库存、余额、积分
极致高并发 + 可接受短暂不一致只删不写+ 本地缓存短 TTL + Redis 异步更新极低秒杀读多写少、排行榜
最高一致性Canal / Maxwell / Debezium监听 binlog → 推送到 Redis金融、对账、核心配置

延迟双删最常见写法(伪代码)

@TransactionalpublicvoidupdateProduct(Productproduct){// 1. 先写 DBproductMapper.update(product);// 2. 立即删 Redis(防读到旧值)redis.delete("product:"+product.getId());// 3. 延迟 100–500ms 再删一次(防读-写-读并发场景下的脏数据)ThreadPool.execute(()->{Thread.sleep(200);redis.delete("product:"+product.getId());});}

本地缓存一致性(Caffeine + Redis):

  • Redis 发Pub/SubStream广播失效事件
  • 各节点订阅后删除本地缓存(最主流方案)
  • 或者用短 TTL + 主动刷新(牺牲一点命中率换简单)

4. 热点 & 大 key & 拆分 & 限流(极致高并发的护城河)

  • 热点 key:提前识别(大促前埋点 / Redis 热点检测 / 客户端上报)→ 打散多副本(多 key + 随机后缀)或用本地缓存 + 一致性 hash 路由
  • 大 key:拆(Hash/List/Set 分片)、懒删除、scan + hdel
  • Redis 自身防护
    • proxy 层(Twemproxy / Codis / Redis-Cluster Proxy / 自研)
    • 慢查询监控 + 大 key 拆分 + 内存淘汰策略(allkeys-lru / volatile-lfu)
    • 主从 + 哨兵 / Cluster + 多副本读写分离
  • 应用层限流:令牌桶 / 漏桶 + Sentinel / Resilience4j 熔断 + 降级读 DB / 读本地快照

5. 高可用 & 容灾(别只说主从)

  • Redis Cluster(16384 slot) + 多 master + replica ≥ 2
  • 多机房 / 多地域读写分离(主写从读 + Proxy 智能路由)
  • 缓存穿透兜底:布隆过滤器(Redis bitmap / 本地 long[])
  • 雪崩防护:随机过期 + 过期时间打散+预热+熔断降级(读本地 / 读降级数据源)
  • 冷启动:异步预热(MQ + 定时任务)或热点数据持久化(RDB + AOF 混合)

6. 监控 & 观测(面试官很爱问)

  • 核心指标:命中率(分层分别看)、QPS、延迟 p99、慢查询、淘汰 key 数、内存碎片率、连接数
  • 热点探测:Redis 慢查询 + INFO commandstats + 客户端上报
  • 报警:命中率 < 85%、延迟突增、内存使用率 > 80%、大 key 出现

一句话总结回答框架:

我不会只用单机 Redis,而是采用 CDN + Nginx/OpenResty + Caffeine本地缓存 + Redis Cluster 多级缓存架构
读走就近原则(本地 > Redis > DB),写采用先写 DB + 延迟双删 + Pub/Sub 广播本地失效保证最终一致性。
热点通过提前预热 + 打散多副本 + 本地缓存防护,Redis 本身做Cluster + Proxy + 慢查询监控 + 大 key 拆分,整体能稳定支撑单接口百万 QPS级别并发,同时保持99.99% 可用性。”

你现在可以根据项目实际情况补充具体数字、技术选型和踩坑经验,基本就能把面试官问懵~

你项目里目前做到哪一层了?或者最头疼的是哪个点(热点、一致性、成本)?可以继续聊。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 20:51:58

MySQL必备基础

MySQL 必备基础&#xff08;2025-2026 生产视角最实用版本&#xff09; 以下内容把绝大多数公司在面试、接手项目、日常维护中最常遇到的 MySQL 核心知识点浓缩成一份“速查 理解 避坑”清单&#xff0c;适合快速建立完整认知框架。 一、MySQL 架构与存储引擎&#xff08;必…

作者头像 李华
网站建设 2026/4/28 6:48:03

基于掩码SM4算法的选择明文相关碰撞攻击方法与流程MatlabSimulink优化算,设计程序模型文档报告测试定制(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于掩码SM4算法的选择明文相关碰撞攻击方法与流程MatlabSimulink优化算,设计程序模型文档报告测试定制(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码(1)遗传GA算法,粒子群PSO算法,退火SA算法,蜂群ABC算法,鱼群FSA算法,灰狼G…

作者头像 李华
网站建设 2026/5/9 14:04:03

Java基于Spring Boot+Vue的网上招聘系统

项目说明 随着社会的快速发展和信息化时代的到来&#xff0c;高校毕业生就业管理面临着前所未有的挑战与机遇。传统的就业管理方式&#xff0c;如人工记录、纸质文档存储等&#xff0c;已难以满足当前大规模、高效率的信息管理需求。因此&#xff0c;开发一套高效、智能化的网上…

作者头像 李华
网站建设 2026/5/10 12:06:12

技术炒股心得

技术炒股心得&#xff1a;工具为骨&#xff0c;心法为魂&#xff08;附避坑指南&#xff09;重要前提&#xff1a;技术分析是概率工具&#xff0c;非“圣杯”。所有策略需配合严格风控&#xff0c;投资有风险&#xff0c;本文仅为经验总结&#xff0c;不构成任何投资建议。&…

作者头像 李华
网站建设 2026/4/26 15:13:34

24GB显卡轻松上手InternLM-20B大模型,手把手教程来啦

无论在本地电脑还是在云端都可以轻松使用该镜像&#xff0c;现在就让我们跟着教程一起体验InternLM-20B的魅力吧~ 本地电脑运行 如果您本地有GPU&#xff08;显存24GB及以上&#xff09;&#xff0c;可以在本地CG客户端直接使用&#xff0c;即可获得和AutoDL云端一致的使用体…

作者头像 李华