一、EhCache配置
EhCache提供很多丰富的配置,其中有两个是很重要的。
1.1 数据存储位置
EhCache3.x版本中不但提供了堆内缓存heap,还提供了堆外缓存off-heap,并且还提供了数据的持久化操作,可以将数据落到磁盘中disk。
heap堆内内存存储
heap表示使用堆内内存:
- heap(10)代表当前Cache最多只能存储10个数据,当你put第11个数据时,第一个数据就会被移除。
- heap(10,大小单位MB)代表当前Cache最多只能存储10MB数据。
off-heap堆外内存
off-heap是将存储的数据放到操作系统的一块内存区域存储,不是JVM内部,这块空间属于RAM。这种对象是不能直接拿到JVM中使用的,在存储时,需要对数据进行序列化操作,同时获取出来的时候也要做反序列化操作。
disk落到磁盘
disk表将数据落到本地磁盘,这样的话,当服务重启后,依然会从磁盘反序列化数据到内存中。
EhCache提供了三种组合方式:
- heap + off-heap
- heap + disk
- heap + off-heap + disk
在组合情况下存储,存储数据时,数据先落到堆内内存,同时同步到对外内存以及本地磁盘。本地底盘因为空间充裕,所以本地磁盘数据是最全的。而且EhCache要求空间大小必须disk > off-heap > heap。
在组合情况下读取,因为性能原型,肯定是先找heap查询数据,没有数据去off-heap查询数据,off-heap没有数据再去disk中读取数据,同时读取数据之后,可以将数据一次同步到off-heap、heap
通过API实现组合存储方式:
@Test
public void test(){
//0\. 声明存储位置
String path = "D:\\ehcache";
//1\. 初始化好CacheManager
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
// 设置disk存储的位置