“更新缓存(Cache)”要看具体场景/技术栈。我按最常用的情况给你一个通用思路 + 对应示例,你可以直接对照使用。
更新缓存通常有 4 种常见方式:
流程:
优点: 简单、安全
缺点: 短时间内可能有脏数据
写请求:
1. update DB
2. delete cache
读请求:
1. read cache
2. cache miss → read DB → write cache
✅ 推荐方案
❌ 不推荐
原因:缓存更新成功,数据库失败会导致数据不一致
适合:
定时任务:
- 从 DB 读取最新数据
- 覆盖缓存
✅ 一致性高,但实现复杂
DEL user:1
或(带过期):
SETEX user:1 300 "new_value"
SET user:1 "new_value"
@CacheEvict@CacheEvict(value = "userCache", key = "#id")
public void updateUser(Long id, User user) {
userMapper.update(user);
}
@Cacheable(value = "userCache", key = "#id")
public User getUser(Long id) {
return userMapper.selectById(id);
}
Ctrl + F5<script src="app.js?v=2"></script>
self.skipWaiting();
| 场景 | 推荐方式 |
|---|---|
| 数据库 + Redis | Cache Aside |
| 配置类缓存 | 定时刷新 |
| 实时性要求高 | Binlog / MQ |
| 前端静态资源 | 版本号 / 文件名 |
你可以直接告诉我:
我可以给你针对你项目的完整方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。