Maven依赖
org.ehcache
ehcache
3.10.0
javax.cache
cache-api
1.1.1
工具类
public class EhcacheUtil {
private static CacheManager manager;
private static final int HEAP_SIZE = 100;
private static final int OFFHEAP_SIZE = 200;
private static final int EXPIRE_HOUR = 12;
public static Cache getCache(Class key, Class value,String cacheName ) {
manager = CacheManagerBuilder.newCacheManagerBuilder()
.build(true);
//创建Cache实例
CacheConfigurationBuilder builder = CacheConfigurationBuilder.newCacheConfigurationBuilder(key, value,
ResourcePoolsBuilder.heap(HEAP_SIZE) //堆内缓存,速度最快
.offheap(OFFHEAP_SIZE, MemoryUnit.MB) // 堆外内存,速度低于 heap,但是高于 disk
// .disk(1, MemoryUnit.GB) //磁盘缓存,速度最低,相对于 heap和off-heap,disk可以分配大量资源空间
).withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofHours(EXPIRE_HOUR)));
Cache cache = manager.createCache(cacheName, builder);
return cache;
}
public static void release(String cacheName) {
manager.removeCache(cacheName);
//关闭资源
manager.close();
}
public static void main(String[] args) {
String cacheName = Long.class.getName()+"_"+String.class.getSimpleName();
Cache cache = EhcacheUtil.getCache(Long.class, String.class,cacheName);
//写缓存
cache.put(1001L, "xixi");
//读缓存
String value = cache.get(1001L);
System.out.println(value);
EhcacheUtil.release(cacheName);
cacheName = Long.class+"_"+User.class.getSimpleName();
Cache cache = getCache(Long.class, User.class, cacheName);
cache.put(1001L, new User(1001L,"张三","zhangsan","1234",true,"369950806@qq.com","13264494458"));
User user = cache.get(1001L);
System.out.println(user);
}
}