在 Java 开发中,缓存(Cache)的作用主要是提升系统性能、降低资源消耗、提高响应速度。下面从多个角度给你系统讲一下。
示例:
// 没有缓存
User user = userDao.queryFromDB(userId); // 每次都查数据库
// 有缓存
User user = cache.get(userId);
if (user == null) {
user = userDao.queryFromDB(userId);
cache.put(userId, user);
}
✅ 效果:数据库访问次数大幅减少
常见场景:
缓存能显著减少用户等待时间
典型架构:
请求 → 缓存 → 命中 ✅
→ 未命中 → 数据库
不仅用于数据缓存,也用于:
例如:
实现方式:
HashMapGuava CacheCaffeine(推荐)Cache<String, User> cache = Caffeine.newBuilder()
.expireAfterWrite(10, TimeUnit.MINUTES)
.build();
常见技术:
@Cacheable("user")
public User getUser(int id) {
return userDao.findById(id);
}
| 问题 | 说明 | 解决方式 |
|---|---|---|
| 数据不一致 | 缓存和 DB 不同步 | 更新 DB 后删缓存 |
| 缓存穿透 | 查不存在的数据 | 空值缓存 / 布隆过滤器 |
| 缓存击穿 | 热点 key 失效 | 互斥锁 / 永不过期 |
| 缓存雪崩 | 大量 key 同时失效 | 随机过期时间 |
Java 缓存的作用就是:用空间换时间,用内存换性能,让系统更快、更稳、更能扛。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。