换个角度想
缓存像餐厅的备菜台:热门菜提前备在手边,点单直接出,不用每单都回冷库现取。但备好的菜有保质期——食材换了还端老菜,就要出问题。
术语 · 数据与存储
Cache
暂存经常使用的数据,减少重复计算或远程请求,提升响应速度。
算过一次的,先留在手边
缓存像餐厅的备菜台:热门菜提前备在手边,点单直接出,不用每单都回冷库现取。但备好的菜有保质期——食材换了还端老菜,就要出问题。
接口热门文章榜
特点读得多 · 变得少
先问缓存:hot-articles 有吗?
第一次没有(MISS),去数据库算
一万次请求 = 一万次大查询
每次 800ms,数据库越来越喘
keyhot-articles
有效期5 分钟
一个请求进来
首页榜单、商品详情这类读得多、变得少的数据最适合缓存。
大量重复查询被缓存挡在门外,数据库只服务真正的新问题。
静态资源缓存在本地,第二次打开网站才那么快。
后台明明改了商品价格,页面上过了好几分钟才变过来。这多半是什么在起作用?
旧价格还躺在某层缓存里没过期。这是缓存一致性问题:要么改价时主动清掉对应缓存,要么接受有效期内的短暂旧数据——关键是要明确选了哪种,而不是没意识到缓存的存在。
缓存的代价是「可能旧」。价格、库存、权限这类必须实时准确的数据,要么不缓存,要么改动时主动失效——别让用户拿着过期信息做决定。