温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Cache缓存会失效吗

发布时间:2026-08-30 07:48:43 来源:亿速云 阅读:90 作者:小樊 栏目:数据库

缓存是会失效的,而且“失效”本身就是缓存设计里的核心机制之一。是否失效、什么时候失效,取决于缓存类型、失效策略和使用场景。下面用通俗方式给你系统讲一下。


一、缓存为什么会失效?

缓存失效,本质是:缓存中的数据不再被信任,需要重新从数据源获取最新数据

常见原因有:

1️⃣ 过期失效(最常见)

缓存设置了生存时间(TTL,Time To Live)

  • 时间一到,缓存自动失效
  • 典型场景:CDNRedis、浏览器缓存

✅ 例如:

缓存有效期:5 分钟
5 分钟后 → 缓存失效 → 重新请求数据库

2️⃣ 主动失效(人工 / 业务触发)

数据发生变化时,主动删除或更新缓存

✅ 典型场景:

  • 更新数据库后,删除缓存
  • 发布新文章 → 清空首页缓存
更新数据 → 删除缓存 → 下次读取重新加载

3️⃣ 容量不足被淘汰(LRU / LFU)

缓存空间有限,当缓存满了,会淘汰“不常用”的缓存。

常用淘汰策略:

  • LRU(Least Recently Used,最近最少使用)
  • LFU(Least Frequently Used,最少使用频率)

✅ 特点:

  • 缓存没过期,但也被清掉
  • 对业务是“意外失效”

4️⃣ 服务重启 / 宕机

  • 本地缓存(如 Java 的 HashMap)
  • 未开启持久化的 Redis

服务重启后:

内存清空 → 缓存全部失效

5️⃣ 缓存一致性失效

数据库已经更新,但缓存仍是旧数据。

这种情况缓存还没过期,但逻辑上已经“失效”了


二、不同缓存的失效特点

✅ 浏览器缓存

  • 会失效
  • 依据:Cache-ControlExpires
  • 强缓存 / 协商缓存

✅ Redis 缓存

  • 一定会失效
  • 支持 TTL
  • 支持内存淘汰策略
  • 可手动 DEL / EXPIRE

✅ CDN 缓存

  • 会失效
  • 按 URL + TTL
  • 可主动刷新(Purge)

✅ 本地缓存(如 Guava、Caffeine)

  • 会失效
  • 支持过期时间
  • JVM 重启即失效

三、典型失效策略对比

策略 是否失效 说明
TTL(过期时间) 最常用
主动删除 数据更新时
LRU/LFU 淘汰 内存不足时
服务重启 内存缓存
永久缓存 一般不建议

四、常见面试题一句话总结

缓存不是永久的,它一定会失效;设计缓存的核心问题不是“会不会失效”,而是“什么时候失效、如何尽量一致”。


如果你愿意,我可以帮你:

  • 对比 Redis 缓存失效 vs 浏览器缓存
  • 讲清 缓存雪崩 / 击穿 / 穿透
  • 结合你正在用的技术(如 Redis、Spring Cache)给你具体示例
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI