@levinzhang
2016-05-04T05:39:52.000000Z
字数 1853
阅读 646
by Matt Raible on May 02, 2016
Terracotta发布了分布式缓存技术Ehcache的3.0版本,支持了一些重要的新特性。首先,它的API进行了重构,现在使用了Java的泛型。性能有所提升,同时还增加了对javax.cache API(JSR-107)和非堆存储功能的支持。
Terracotta发布了分布式缓存技术Ehcache的3.0版本,支持了一些重要的新特性。首先,它的API进行了重构,现在使用了Java的泛型。性能也有所提升,同时还增加了对javax.cache
API(JSR-107)和非堆存储功能的支持。因为支持javax.cache
API,Ehcache 3.0与Spring的缓存实现了完全的兼容。
开发人员可以通过如下的坐标将该版本的Ehcache集成到Maven项目之中:
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> <version>3.0.0</version> </dependency>
对于Gradle用户来说,需要这样声明:
`compile group: 'org.ehcache', name: 'ehcache', version: '3.0.0'`
Ehcache的Java API使用了生成器(builder)方式,从而提供了一种很流畅的配置方式。我们可以使用CacheManager
来与Cache
进行交互:
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() .withCache("myCache", CacheConfigurationBuilder.newCacheConfigurationBuilder( Long.class, String.class, ResourcePoolsBuilder.heap(10))) .build(true); Cache myCache = cacheManager.getCache("myCache", Long.class, String.class); myCache.put(1L, "First!"); String value = myCache.get(1L); cacheManager.removeCache("myCache"); cacheManager.close();
Ehcache还提供了新的UserManagedCache
,借助它可以创建非CacheManager管理的缓存,比如分配短生命周期的缓存(参见配置指南了解更多信息)。
与之前的版本类似,Ehcache 3.0提供了存储层,这样的话,我们就能将频繁使用的数据放在较快的分层,而将很少使用的数据放在更慢的分层。
如下是一个样例,展示了如何为堆、非堆以及磁盘存储配置资源池。在这个样例中,为磁盘存储提供了一个路径并创建了三个不同的资源池。第一个资源池的大小是存放10个条目,第二个资源池的是非堆的,它最多存储1MB,最后一个磁盘资源池被设置为20MB。
PersistentCacheManager persistentCacheManager = CacheManagerBuilder.newCacheManagerBuilder() .with(CacheManagerBuilder.persistence( getStoragePath() + File.separator + "myData")) .withCache("threeTieredCache", CacheConfigurationBuilder.newCacheConfigurationBuilder( Long.class, String.class, ResourcePoolsBuilder.newResourcePoolsBuilder() .heap(10, EntryUnit.ENTRIES) .offheap(1, MemoryUnit.MB) .disk(20, MemoryUnit.MB) ) ).build(true);
Ehcache邀请开发人员为其提供贡献内容(参见贡献文档 来了解更多信息)。对于一般的问题和帮助请求,参考 ehcache的用户邮件列表。
查看英文原文:Ehcache 3.0 Released with Revamped API and Off-Heap Storage