主要的特点:
- 1、缓存数据有三级:内存、堆外缓存Off-Heap、Disk缓存,因此无需担心容量问题。还可以通过RMI、可插入API等方式进行分布式缓存。
- 2、缓存数据会在虚拟机重启的过程中写入磁盘,持久化。
- 3、具有缓存和缓存管理器的侦听接口。
- 4、支持多缓存管理器实例,以及一个实例的多个缓存区域。
优点:
- 快速
- 简单
- 多种缓存策略
- 缓存数据有两级:内存和磁盘,因此无需担心容量问题
- 缓存数据会在虚拟机重启的过程中写入磁盘
- 可以通过RMI、可插入API等方式进行分布式缓存
- 具有缓存和缓存管理器的侦听接口
- 支持多缓存管理器实例,以及一个实例的多个缓存区域
- 提供Hibernate的缓存实现
缺点:
- 1. 使用磁盘Cache的时候非常占用磁盘空间:这是因为DiskCache的算法简单,该算法简单也导致Cache的效率非常高。它只是对元素直接追加存储。因此搜索元素的时候非常的快。
- 2.无法保存数据的安全性,如果kill掉java的时候,Ehcache会重建cache
常被查询、重要、数据量小,堆内缓存不需要担心JVM重启,有持久化
常被查询、数据量中等,几个G,堆外缓存不需要担心服务器重启,有持久化
不常用,数据量大,不想占用数据库IO的数据,Disk缓存
Ehcache三个级别的缓存:
- 堆内存储(Memory store):
- 不要求实现序列化接口。速度快,但是容量有限。受GC管理。
- 堆外存储(Off-heap store):
- 只在企业版本的Ehcache中提供,原理是利用nio的DirectByteBuffer来实现,比存储到磁盘上快,而且不受GC的影响,但是必须以字节数组的方式存储,对象在存储过程中进行序列化,读取则进行反序列化操作,它的速度大约比堆内存储慢一个数量级。
- 磁盘存储(Disk store):
- 要求实现序列化接口。