java如何设置缓存
设置缓存的方法
在Java中设置缓存可以通过多种方式实现,包括使用内置的缓存机制、第三方库或框架。以下是几种常见的方法:
使用ConcurrentHashMap实现简单缓存
ConcurrentHashMap是线程安全的,适合作为简单的缓存实现。
import java.util.concurrent.ConcurrentHashMap;
public class SimpleCache<K, V> {
private final ConcurrentHashMap<K, V> cache = new ConcurrentHashMap<>();
public void put(K key, V value) {
cache.put(key, value);
}
public V get(K key) {
return cache.get(key);
}
public void remove(K key) {
cache.remove(key);
}
}
使用Caffeine高性能缓存库
Caffeine是一个高性能的Java缓存库,支持多种缓存策略。
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
public class CaffeineCacheExample {
public static void main(String[] args) {
Cache<String, String> cache = Caffeine.newBuilder()
.maximumSize(100)
.build();
cache.put("key", "value");
String value = cache.getIfPresent("key");
System.out.println(value);
}
}
使用Ehcache缓存框架
Ehcache是一个成熟的Java缓存框架,支持分布式缓存。
import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
public class EhcacheExample {
public static void main(String[] args) {
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("preConfigured",
CacheConfigurationBuilder.newCacheConfigurationBuilder(
String.class, String.class,
ResourcePoolsBuilder.heap(10)))
.build();
cacheManager.init();
Cache<String, String> cache = cacheManager.getCache("preConfigured", String.class, String.class);
cache.put("key", "value");
String value = cache.get("key");
System.out.println(value);
cacheManager.close();
}
}
使用Guava Cache
Guava Cache是Google提供的缓存库,功能丰富且易于使用。
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
public class GuavaCacheExample {
public static void main(String[] args) {
LoadingCache<String, String> cache = CacheBuilder.newBuilder()
.maximumSize(100)
.build(new CacheLoader<String, String>() {
@Override
public String load(String key) throws Exception {
return "default";
}
});
cache.put("key", "value");
String value = cache.get("key");
System.out.println(value);
}
}
使用Spring Cache注解
在Spring框架中,可以通过注解轻松实现缓存功能。

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
@Service
public class BookService {
@Cacheable("books")
public String getBook(String isbn) {
return "Book Details for " + isbn;
}
}
缓存策略选择
- 内存缓存:适用于单机应用,如
ConcurrentHashMap、Caffeine、Guava Cache。 - 分布式缓存:适用于集群环境,如
Ehcache、Redis。 - 框架集成:Spring项目推荐使用
Spring Cache注解。
根据应用场景选择合适的缓存实现,确保性能和可维护性。






