一,ehcache简介
Ehcache主要是一种广泛使用的开源java分布式缓存。主要面向通用的缓存,java EE 和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常 等处理程序。主要特点,快速,简单,多种缓存策略。
所需jar包(ehcache.jar,依赖jar包 slf4j.jar)
maven 项目 pom.xml
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>version</version>
</dependency>
二,了解 ehcache 不同模式下的生命周期
1.内存存储(堆缓存,堆外缓存)
/**
* 内存存储 生命周期
*
* @return 存儲内容
*/
public UserManagedCache<Long, String> userManagedCacheInit() throws Exception {
// 实例化 UserManagedCache操作
// UserManagedCacheBuilder.newUserManagedCacheBuilder(key,value)两个参数缓存存储的key和value
// withEventExecutors 提供有序无序事件传递
// withEventListeners 提供监听配置
// heap() 第一个参数是这堆上准许的条目 也可以设置单位(G,MB,KB,B),第二个是超出之后如何执行 ,详情请查看官方文档
// 如果你不想用 heap() 也可以使用“堆外” offheap() 如果使用“堆外”需要定义资源池大小
UserManagedCache<Long, String> userManagedCache = UserManagedCacheBuilder
.newUserManagedCacheBuilder(Long.class, String.class)
.withEventExecutors(Executors.newSingleThreadExecutor(), Executors.newFixedThreadPool(5))
.withEventListeners(CacheEventListenerConfigurationBuilder
.newEventListenerConfiguration(ListenerObject.class, EventType.CREATED, EventType.UPDATED)
.asynchronous().unordered())
.withResourcePools(ResourcePoolsBuilder.newResourcePoolsBuilder().heap(3, EntryUnit.ENTRIES).offheap(10, MemoryUnit.MB))
.build(false);
// 实例化UserManagedCache 的时候如果 build 设置false则必须执行init()操作
userManagedCache.init();
// 缓存内容
userManagedCache.put(1L, "Ehcache 用户管理缓存1");
userManagedCache.put(2L, "Ehcache 用户管理缓存2");
userManagedCache.put(3L, "Ehcache 用户管理缓存2");
// 释放缓存资源 《注: 使用完成后在释放资源》
// userManagedCache.close();
// 返回状态
// userManagedCache.getStatus();
return userManagedCache;
}
2 . 磁盘缓存
/**
* 磁盘存 储持久生命周期
*
* @return 存儲内容
*/
public PersistentUserManagedCache<Long, String> persistentUserManagedCacheInit() throws Exception {
// 创建本地磁盘存储 服务
LocalPersistenceService localPerisitenceService = new DefaultLocalPersistenceService(
new DefaultPersistenceConfiguration(new File("E:\\a", "myUserData")));
// 实例化 PersistentUserManagedCache
// with(new
// UserManagedPersistenceContext<Long,String>("cache-name",本地磁盘存储服务对象)将持久性服务传递给构造器以及缓存名称
// disk() 第一个参数磁盘上准许存储的最大条目 或者 大小,第二个参数是单位,第三个参数是boolean类型如果设置true
// 则池是持久的,如果不写参数则默认false 不持久
PersistentUserManagedCache<Long, String> cache = UserManagedCacheBuilder
.newUserManagedCacheBuilder(Long.class, String.class)
.with(new UserManagedPersistenceContext<Long, String>("cache-name", localPerisitenceService))
.withEventExecutors(Executors.newSingleThreadExecutor(), Executors.newFixedThreadPool(5))
.withEventListeners(CacheEventListenerConfigurationBuilder
.newEventListenerConfiguration(ListenerObject.class, EventType.CREATED, EventType.UPDATED)
.asynchronous().unordered())
.withResourcePools(ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10L, EntryUnit.ENTRIES).offheap(5, MemoryUnit.MB).disk(10L,
MemoryUnit.MB))
.build(false);
// 实例化cache 的时候如果 build 设置false则必须执行init()操作
cache.init();
// 使用缓存工作
cache.put(42L, "磁盘存 储持久生命周期42");
cache.put(43L, "磁盘存 储持久生命周期43");
// 关闭缓存不会删除磁盘上的数据
// cache.close();
// 要在关闭后执行此操作删除磁盘的上缓存数据 销毁全部,
// destroyCache(String CacheName) 指定销毁
// cache.destroy();
// 完成后停止持久化操作
// localPerisitenceService.stop();
return cache;
}
源码地址 : https://pan.baidu.com/s/1boP4fWb
Ehcache缓存详解
本文介绍了Ehcache,一种广泛使用的开源Java分布式缓存。文章详细解释了Ehcache的特点,包括其内存和磁盘存储机制,并通过示例代码展示了如何在堆内和堆外进行缓存管理以及如何实现磁盘持久化存储。
322

被折叠的 条评论
为什么被折叠?



