如何缓存java
缓存 Java 对象的方法
使用 HashMap 实现简单缓存
创建一个 HashMap 存储键值对,适用于小规模数据缓存。需要手动管理缓存的增删改查。
Map<String, Object> cache = new HashMap<>();
cache.put("key", "value");
Object value = cache.get("key");
利用 Java 内置缓存机制
Java 标准库提供 WeakHashMap 或 ConcurrentHashMap,适合多线程环境。WeakHashMap 在内存不足时自动回收缓存。
Map<String, Object> weakCache = new WeakHashMap<>();
使用第三方缓存框架
Ehcache
Ehcache 是一个轻量级缓存框架,支持内存和磁盘存储,配置简单。
<!-- Maven 依赖 -->
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.9.0</version>
</dependency>
示例配置:
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder().build();
Cache<String, String> myCache = cacheManager.createCache("myCache",
CacheConfigurationBuilder.newCacheConfigurationBuilder(
String.class, String.class, ResourcePoolsBuilder.heap(100)));
myCache.put("key", "value");
Caffeine
高性能缓存库,适合高吞吐场景,提供自动过期策略。

<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>3.1.8</version>
</dependency>
示例代码:
Cache<String, Object> caffeineCache = Caffeine.newBuilder()
.expireAfterWrite(10, TimeUnit.MINUTES)
.maximumSize(1000)
.build();
caffeineCache.put("key", "value");
分布式缓存方案
Redis
通过 Redis 实现跨服务的分布式缓存,支持持久化和高可用。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.4.6</version>
</dependency>
连接示例:

Jedis jedis = new Jedis("localhost");
jedis.set("key", "value");
String value = jedis.get("key");
缓存策略与优化
缓存过期策略
- TTL(Time-To-Live):通过
expireAfterWrite设置固定过期时间。 - LRU(Least Recently Used):移除最近最少使用的数据,通过
maximumSize限制缓存大小。
缓存穿透处理
对于频繁查询不存在的键,使用布隆过滤器或缓存空值。
cache.put("non_existent_key", null); // 缓存空值
缓存一致性
数据库更新时同步删除或更新缓存,避免脏数据。
void updateData(String key, Object newValue) {
database.update(key, newValue);
cache.invalidate(key); // 删除旧缓存
}






