数据与存储
缓存Cache
你可能会问
缓存到底是什么?为什么第二次打开总比第一次快?
简单来说
暂存经常使用的数据,减少重复计算或远程请求,提升响应速度。
第一次 · MISS第二次 · HIT同一个请求,两条路径
数据库跑全程缓存直接返回第二次快,是因为抄了近道
01 · 先这样理解
把抽象概念放进真实场景
暂存经常使用的数据,减少重复计算或远程请求,提升响应速度。
换个角度想缓存像餐厅的备菜台:热门菜提前备在手边,点单直接出,不用每单都回冷库现取。但备好的菜有保质期——食材换了还端老菜,就要出问题。
02 · 点击演示
同一个榜单被打开一万次,都要现算吗?
突出显示的部分,就是当前概念在整条流程中负责的位置。
- 高频请求
接口热门文章榜特点读得多 · 变得少 - 这一步不存在——
每个请求都直奔数据库先问缓存:hot-articles 有吗?
第一次没有(MISS),去数据库算
一万次请求 = 一万次大查询
每次 800ms,数据库越来越喘
算完顺手存一份keyhot-articles有效期5 分钟- 全员现算高峰期一到,数据库先被拖垮重复的问题,答了一万遍直接命中之后的请求 5ms 返回,库只算了一次有效期内,一次劳动万次复用
1 / 4
Ask · 一个请求进来
03 · 放进真实任务
什么时候会遇到它
加速热门内容
首页榜单、商品详情这类读得多、变得少的数据最适合缓存。
给数据库减压
大量重复查询被缓存挡在门外,数据库只服务真正的新问题。
浏览器也在用
静态资源缓存在本地,第二次打开网站才那么快。
04 · 想一想
用一个问题检查理解
后台明明改了商品价格,页面上过了好几分钟才变过来。这多半是什么在起作用?
查看答案
旧价格还躺在某层缓存里没过期。这是缓存一致性问题:要么改价时主动清掉对应缓存,要么接受有效期内的短暂旧数据——关键是要明确选了哪种,而不是没意识到缓存的存在。
最容易踩的坑
缓存的代价是「可能旧」。价格、库存、权限这类必须实时准确的数据,要么不缓存,要么改动时主动失效——别让用户拿着过期信息做决定。