ehcache 简介
官网:https://www.ehcache.org/documentation/3.8/index.html
***************************
基本特性
ehcache是开源的缓存技术,支持进程内缓存、分布式缓存(存储在远程 Terracottaserver上);
缓存数据可存储在heap、offheap、磁盘、远程服务器Terracotta server上;
企业版Terracotta BigMemory Max提供管理监控平台、快速重启恢复、安全等功能
For applications requiring complete enterprise functionality including management
monitoring console (TMC), fast-restartable store (FRS), security, plus more -
along with worldwide professional support, please use Terracotta BigMemory Max
***************************
缓存存储
on-heap store:java虚拟机内存存储,可用jvm 垃圾回收器回收
off-heap store:使用系统内存存储,可用-XX:MaxDirectMemorySize=num限制off-heap大小
disk store:使用磁盘存储缓存数据
clusterd store:使用远程服务器存储,可实现分布式缓存,不可以disk store同时使用
**********************
copier 使用
针对on-heap使用,on-heap默认存储对象key、vlue的引用,如果要存储对象的值value,需要配置copier,配置方法如下:
如果cache、cache manager同时配置,使用cache的配置;
如果cache没有配置copier,on-heap存储缓存value时,在cache manager查找最匹配的copier
内置copier
**********************
序列化
除on-heap,off-heap、disk、cluster store都需要执行序列化、反序列化操作,配置方法如下:
如果在cache、cache manager同时配置,使用cache的配置;
如果cache没有配置,在cache manager处查找最合适的序列化配置
内置序列化器
**********************
使用规则
on-heap、off-heap、disk store、clustered store都可以单独使用;
#配置使用2GB的off-heap内存
CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class,
ResourcePoolsBuilder.newResourcePoolsBuilder().offheap(2, MemoryUnit.GB)).build();
on-heap的单位可为entries、size,其余存储空间需设置为size
#heap 存储10个键值对
ResourcePoolsBuilder.heap(10);
ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10, EntryUnit.ENTRIES);
#heap 使用的空间为 10MB
ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10, MemoryUnit.MB);
disk store需要配置数据存储路径
PersistentCacheManager persistentCacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.with(CacheManagerBuilder.persistence(new File(getStoragePath(), "myData"))) //数据存储路径
.withCache("persistent-cache", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class,
ResourcePoolsBuilder.newResourcePoolsBuilder().disk(10, MemoryUnit.MB, true))
)
.build(true);
混合配置
必须设置heap存储;
disk store、clustered store不能同时使用;
空间大小:on-heap store < off-heap store < disk-store或者on-heap store < off-heap store < clustered store
混合配置可用组合如下
***************************
缓存刷新策略
no expiry:缓存永不失效
ttl(time-to-live):缓存创建到失效的时间
tti(time-to-idle):缓存空闲达到某个值后失效