缓存是会失效的,而且“失效”本身就是缓存设计里的核心机制之一。是否失效、什么时候失效,取决于缓存类型、失效策略和使用场景。下面用通俗方式给你系统讲一下。
缓存失效,本质是:缓存中的数据不再被信任,需要重新从数据源获取最新数据。
常见原因有:
缓存设置了生存时间(TTL,Time To Live)。
✅ 例如:
缓存有效期:5 分钟
5 分钟后 → 缓存失效 → 重新请求数据库
数据发生变化时,主动删除或更新缓存
✅ 典型场景:
更新数据 → 删除缓存 → 下次读取重新加载
缓存空间有限,当缓存满了,会淘汰“不常用”的缓存。
常用淘汰策略:
✅ 特点:
服务重启后:
内存清空 → 缓存全部失效
数据库已经更新,但缓存仍是旧数据。
这种情况缓存还没过期,但逻辑上已经“失效”了。
Cache-Control、ExpiresDEL / EXPIRE| 策略 | 是否失效 | 说明 |
|---|---|---|
| TTL(过期时间) | ✅ | 最常用 |
| 主动删除 | ✅ | 数据更新时 |
| LRU/LFU 淘汰 | ✅ | 内存不足时 |
| 服务重启 | ✅ | 内存缓存 |
| 永久缓存 | ❌ | 一般不建议 |
缓存不是永久的,它一定会失效;设计缓存的核心问题不是“会不会失效”,而是“什么时候失效、如何尽量一致”。
如果你愿意,我可以帮你:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。