名词百科

什么是缓存?

一句话定义

缓存是把访问频繁的数据临时存放在更快的存储介质中,以减少对慢速数据源的访问。常见位置有浏览器、CDN、应用内存、Redis。

发布者:黔序科技

它到底是什么

缓存的本质是用空间换时间,用一致性换性能。凡是有缓存的地方,就存在数据可能过期的窗口——这个窗口有多长、能否接受,是设计缓存时第一个要回答的问题。

缓存不是一个组件,而是分层的:浏览器缓存静态资源,CDN 缓存页面与图片,应用内存缓存热点对象,Redis 缓存查询结果。每层的过期策略不同。

怎么运作的

读路径:先查近层,未命中查远层,最后回源,并把结果写回上层。

写路径:更新数据源后使缓存失效(删除比更新更安全,避免并发写入顺序问题)。

三种典型故障:穿透(请求不存在的数据,缓存永远不命中,压到数据库)、击穿(热点键过期瞬间大量请求回源)、雪崩(大批键同时过期)。对应手段是空值缓存与布隆过滤器、互斥重建、过期时间加随机偏移。

淘汰策略:内存有限,需设定淘汰规则(如最近最少使用)。淘汰策略不当会导致命中率骤降。

容易混的几个概念

  • 缓存与 CDN:CDN 是地理位置维度的缓存。
  • 缓存与消息队列:前者减少重复读取,后者解耦与削峰。
  • 本地缓存与分布式缓存:前者快但多实例不一致,后者一致但多一次网络往返。
  • 缓存预热:上线前主动加载热点数据,避免冷启动冲击数据库。

常见问题

缓存该设多长的过期时间?

取决于数据变化频率与可接受的陈旧程度。变化频繁但容忍短暂不一致的,用较短过期加主动失效;几乎不变的基础数据可以设很长。关键是没有「通用值」。

删缓存还是更新缓存?

通常删除。并发场景下更新缓存可能写入旧值(两个请求顺序错乱),删除后由下一次读回源重建更安全。

E 后端架构 · 同组词条

数据库数据库是结构化存储与管理数据的系统。MySQL 是关系型数据库,用表与行组织数据、支持事务;Redis 是键值型内存数据库,常用于缓存、计数与队列。消息队列消息队列是用于在系统之间异步传递消息的中间件:生产者发送消息,消费者按自己的节奏处理。它解决的是解耦、削峰与异步三个问题。RESTfulRESTful 是一种以资源为中心的接口设计风格,用 HTTP 方法与状态码表达操作;GraphQL 是一种查询语言,由客户端声明需要哪些字段,服务端一次返回。微服务微服务架构是把一个应用拆成多个独立部署、独立运行的小服务,各自负责一块业务能力,通过接口或消息通信。每个服务可单独开发、发布和扩容。APIAPI(Application Programming Interface,应用程序编程接口)是系统之间约定好的调用方式:调用方按约定传入参数,服务方返回结果。它是软件之间协作的接口。业务中台业务中台是把多个业务线共用的能力(用户、商品、订单、支付、营销)抽取成统一服务,供各业务线调用的架构思路。它强调的是能力复用,而不是技术统一。前端前端是用户直接看到并操作的界面部分,运行在浏览器或客户端中;后端是运行在服务器上的业务逻辑与数据存取部分。两者通过接口通信。多租户多租户架构是一套系统同时服务多个客户(租户),各租户的数据相互隔离、配置互不影响。它是 SaaS 能把成本压低的根本原因。