Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Ehcache 3.0 Released with Revamped API and Off-Heap Storage

Ehcache 3.0 Released with Revamped API and Off-Heap Storage

Terracotta has released version 3 of their distributed caching technology Ehcache, sporting a number of important new features. First, its API has been refactored and now leverages Java generics. Performance has generally been enhanced, and support for the javax.cache API (JSR-107) and off heap storage capabilities have been added. Also, Ehcache 3.0 is fully compatible with Spring’s caching thanks to the javax.cache API.

Developers can integrate the version of Ehcache into their Maven projects with the following coordinates:


For Gradle users:

compile group: 'org.ehcache', name: 'ehcache', version: '3.0.0'

Ehcache’s Java API uses builders to provide a fluent means of configuration. You can interact with a Cache via a CacheManager.

CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
            Long.class, String.class, ResourcePoolsBuilder.heap(10)))

Cache<Long, String> myCache =
    cacheManager.getCache("myCache", Long.class, String.class);

myCache.put(1L, "First!");
String value = myCache.get(1L);

Ehcache also offers a new UserManagedCache for creating caches that are not managed by a CacheManager, for example to allocate caches with a short lifecycle (see the configuration guide for more information.)

As with previous versions, Ehcache 3.0 provides storage tiers, making it possible to store frequently used data on faster-tiers and seldom-used data on slower ones.

Below is an example that shows how to configure resource pools for heap, off-heap and disk persistence. In this example, a path is provided for disk storage and three different resource pools are created. The first resource pool is sized to hold 10 entries. The second one is off-heap and will store up to 1MB. Finally, the disk resource pool is set to be 20MB. 

PersistentCacheManager persistentCacheManager = 
            getStoragePath() + File.separator + "myData"))
                Long.class, String.class,
                    .heap(10, EntryUnit.ENTRIES)
                    .offheap(1, MemoryUnit.MB)
                    .disk(20, MemoryUnit.MB)

Developers are invited to contribute to Ehcache. (See contributor documentation for more information). For general questions and help requests, refer to the ehcache-user mailing list.

Rate this Article