java如何缓存数据
Java 数据缓存方法
使用内存缓存(如 HashMap)
创建一个静态的 HashMap 对象存储缓存数据,适用于小型应用或临时缓存需求。
private static Map<String, Object> cache = new HashMap<>();
cache.put("key", "value"); // 存入缓存
Object value = cache.get("key"); // 获取缓存
cache.remove("key"); // 移除缓存
借助 Guava Cache
Google Guava 库提供强大的缓存功能,支持过期策略和容量限制。
Cache<String, Object> cache = CacheBuilder.newBuilder()
.maximumSize(100) // 最大条目数
.expireAfterWrite(10, TimeUnit.MINUTES) // 写入后过期时间
.build();
cache.put("key", "value");
Object value = cache.getIfPresent("key");
使用 Caffeine
Caffeine 是高性能的现代缓存库,功能比 Guava 更丰富。

Cache<String, Object> cache = Caffeine.newBuilder()
.expireAfterWrite(1, TimeUnit.HOURS)
.maximumSize(500)
.build();
cache.put("key", "value");
Object value = cache.getIfPresent("key");
集成 Ehcache
Ehcache 支持分布式缓存和磁盘持久化,适合企业级应用。
<!-- pom.xml 依赖 -->
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.9.0</version>
</dependency>
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder().build();
cacheManager.init();
Cache<String, String> cache = cacheManager.createCache("myCache",
CacheConfigurationBuilder.newCacheConfigurationBuilder(
String.class, String.class, ResourcePoolsBuilder.heap(100)));
cache.put("key", "value");
String value = cache.get("key");
Spring Cache 注解
Spring 框架提供声明式缓存,通过注解简化操作。

@Cacheable(value = "users", key = "#userId") // 缓存查询结果
public User getUser(String userId) {
return userRepository.findById(userId);
}
@CacheEvict(value = "users", key = "#userId") // 清除缓存
public void updateUser(User user) {
userRepository.save(user);
}
Redis 分布式缓存
通过 Jedis 或 Lettuce 连接 Redis 实现跨服务缓存。
Jedis jedis = new Jedis("localhost");
jedis.set("key", "value");
String value = jedis.get("key");
jedis.expire("key", 60); // 设置过期时间
缓存策略注意事项
- 设置合理的过期时间避免数据陈旧
- 高并发场景考虑缓存击穿、雪崩问题
- 大数据量时监控内存使用情况
- 分布式环境需同步各节点缓存状态






