返回术语

数据与存储

缓存Cache

你可能会问

缓存到底是什么?为什么第二次打开总比第一次快?

简单来说

暂存经常使用的数据,减少重复计算或远程请求,提升响应速度。

动态说明算过一次的,先留在手边Cache
同一个请求,两条路径
第二次快,是因为抄了近道
第一次老老实实查库,并把结果存下来;之后的请求先看缓存,命中就直接返回,省掉重复的计算和查询。

01 · 先这样理解

把抽象概念放进真实场景

暂存经常使用的数据,减少重复计算或远程请求,提升响应速度。

换个角度想

缓存像餐厅的备菜台:热门菜提前备在手边,点单直接出,不用每单都回冷库现取。但备好的菜有保质期——食材换了还端老菜,就要出问题。

02 · 点击演示

同一个榜单被打开一万次,都要现算吗?

突出显示的部分,就是当前概念在整条流程中负责的位置。

  1. 高频请求

    接口热门文章榜

    特点读得多 · 变得少

    当前步骤
  2. 这一步不存在——
    每个请求都直奔数据库

    先问缓存:hot-articles 有吗?

    第一次没有(MISS),去数据库算

    等待进入
  3. 一万次请求 = 一万次大查询

    每次 800ms,数据库越来越喘

    算完顺手存一份

    keyhot-articles

    有效期5 分钟

    等待进入
  4. 全员现算高峰期一到,数据库先被拖垮重复的问题,答了一万遍
    直接命中之后的请求 5ms 返回,库只算了一次有效期内,一次劳动万次复用
    等待进入
1 / 4

Ask · 一个请求进来

03 · 放进真实任务

什么时候会遇到它

加速热门内容

首页榜单、商品详情这类读得多、变得少的数据最适合缓存。

给数据库减压

大量重复查询被缓存挡在门外,数据库只服务真正的新问题。

浏览器也在用

静态资源缓存在本地,第二次打开网站才那么快。

04 · 想一想

用一个问题检查理解

后台明明改了商品价格,页面上过了好几分钟才变过来。这多半是什么在起作用?

查看答案

旧价格还躺在某层缓存里没过期。这是缓存一致性问题:要么改价时主动清掉对应缓存,要么接受有效期内的短暂旧数据——关键是要明确选了哪种,而不是没意识到缓存的存在。

老师提醒

最容易踩的坑

缓存的代价是「可能旧」。价格、库存、权限这类必须实时准确的数据,要么不缓存,要么改动时主动失效——别让用户拿着过期信息做决定。

⌘K搜索知识库

最近收录

正在载入知识索引…