2026年5月21日Evgeny · 高级系统工程师

Redis、队列与缓存:不买新机器也能让网站快 10 倍


Redis 缓存位于浏览器与数据库之间

「换台更大的服务器」——慢站点最常见的处方。有时对,但在 NineLab 接触的大多数项目里,瓶颈不在 CPU,而在架构:每个请求都重新从数据库拉相同数据,重活还在 HTTP 里同步跑,用户盯着 spinner。

缓存(Redis)、消息队列和 CDN 是三个能在不线性涨主机账单的情况下成倍提速的工具。下文用业务语言解释原理与 realistic 数字。

症状:站点「卡」,服务器才 40% 负载

典型电商或 B2B 门户:

  • catalog 几万 SKU,筛选排序复杂;
  • 单商品页经 ORM 串 6–12 条 SQL;
  • 150–300 并发时响应从 1.2 秒爬到 6–9 秒;
  • 市场一投流——「突然」全挂(618、双 11 前尤其常见)。

此时 VPS CPU 可能远未到 100%。瓶颈在数据库与请求路径上的阻塞操作。加机器有缓冲,不治本。

缓存:别对同一结果每秒算一千遍

Redis(或 Memcached、KeyDB)是应用与 PostgreSQL/MySQL 之间的快内存。重查询结果按 key 存;后续成千上万用户毫秒级命中。

优先缓存什么

  • 列表页与 catalog—— TTL 5–15 分钟,改商品时失效。
  • 商品详情——按 SKU 分 key;大促 selective 刷新。
  • 字典数据——类目、品牌、筛选项、地区—— TTL 1 小时到 1 天。
  • 聚合块——「热销榜」、首页模块(若 JOIN 很重)。

生产里好用的策略

  • Cache-aside: 先读 Redis,miss 再查库并回填。
  • 事件失效: 改价即删 product:{id} 及相关列表 key。
  • 防击穿(cache stampede): key 过期时加锁,避免千请求同时打穿 DB。

头号失误: 只缓存不失效。客户看到旧价——比慢页更伤。

队列:别在点击瞬间做完所有事

若下单 handler 里同步发邮件、调 ERP、生成 PDF、写分析——用户等待的是延迟之和。

队列(RabbitMQ、Redis Streams、阿里云 MNS、Kafka 在大流量)把「给用户答复」和「后台干活」分开:

  1. API 收单、入队、200–400 ms 返回 OK。
  2. Worker 异步发信、同步 CRM、更新库存。

典型入队任务:邮件/短信、webhook、导出、推荐重算、Excel 导入、报表生成。

CDN:不该回源的东西别回源

商品图、CSS、JS、字体——静态资源应从离用户更近的边缘节点出。Origin 在华东、用户在西北/华南,First Contentful Paint 可差数秒

CDN 不替代 API 缓存,但减 origin 压力,后端再重也能「感觉更快」。

真实项目「前 / 后」数字

电商单体 PHP/Laravel,catalog ~18,000 SKU,单机 VPS、无水平扩展。

指标
DB 请求(峰值 /s) ~180 ~12
API p95 延迟 2.9 秒 0.21 秒
退化前并发用户 ~220 ~1,300
主机账单 不变 不变

* 同 VPS 上 Redis + 队列,静态走 CDN,重 SQL 加索引

热页「体感速度」约 10×。移动端转化一月涨 11%——仅仅因为 catalog 不再「想五秒」。

缓存和队列也救不了的情况

  • 没索引——缓存 masking,miss 仍打穿 DB。
  • ORM N+1——先 profiling,再缓存。
  • 关键路径同步调外部系统——必须队列化。
  • 峰值超过单机物理上限——要水平扩展,不只 Redis。

优化是诊断,不是「上了 Redis 就完事」。

2–3 周落地计划

第 1 周 — 测量

  • APM 或 slow query log:Top-10 最贵 endpoint
  • 「现状」压测——记下 p95 与崩溃点

第 2 周 — 快赢

  • catalog/详情缓存 + 失效策略
  • 邮件与重集成进队列
  • 静态上 CDN

第 3 周 — 验证

  • 复测压测
  • 指标:cache hit rate、队列深度、p95
  • 给业务的 before/after 一页纸

给老板的 ROI

典型项目 Redis + 队列 + CDN 一次性 数十万元 量级,加维护。把服务器「规格翻倍」是 每月多几千到上万元,且不保证根因消失。

慢站吃掉移动端 15–20% 转化时,优化常在 1–2 个月 回本——快于又一轮 UI 改版。

要点

加速不总是买硬件,而是别在每次点击里做多余工作。Redis、队列、CDN 是把压力从 DB 挪到内存和后台的成熟组合。

NineLab 做性能审计,在你们真实指标上找瓶颈,并按真实流量落地缓存——前后都做压测。联系我们

主题常见问题

流量形态与数据往往与生产不一致。需要场景、与线上一致的指标,以及可回滚的逐步加压。

常见瓶颈在数据库与执行计划、连接池、同步外部调用与队列——可作为快速排查清单。

不一定:失效、冷启动与热点键可能适得其反。缓存要按读模型与 SLO 设计。

垂直扩展与查询优化触顶,且数据增长在分片键上可预期时。

想把这些落地到你的系统里?

介绍一下你的现状 —— 我们会给出工作计划,以及值得写进 SLA/SLO 的可衡量指标。

查看全部:高负载

高负载2026年6月7日
工业物联网:为什么传感器试点进不了生产环境

工业 IoT 典型踩坑:从演示级设备到 1000+ 传感器。停机成本估算、MQTT/边缘/云架构, 以及试点扩容前的检查清单。

阅读文章
高负载2026年5月31日
Marketplace 微服务:什么时候必要,什么时候是多余的数百万

给 CEO/CTO 的决策框架:5 个该拆服务的信号、4 个过早微服务化的征兆, 以及「一上来就做京东架构」在 startup 上的真实成本。

阅读文章
高负载2026年5月19日
网站宕机 1 小时值多少钱:用三个例子算清楚

电商、B2B、SaaS 的宕机成本公式:直接与隐性损失、峰值系数, 以及 2026 年基础设施事故带来的启示与 incident 准备清单。

阅读文章
高负载2026年5月17日
千万级投放遇上 503:技术未就绪如何烧掉营销预算

解析广告战役因网站宕机而打水漂的原因:量化真实损失、三大系统性成因,以及大促/大投前 基础设施准备清单。

阅读文章