Ehcache3.0.0的使用

ehcache使用

版本3.0.0

介绍

1.概述

http://www.ehcache.org/about/
Ehcache is an open source, standards-based cache that boosts performance, offloads your database, and simplifies scalability. It’s the most widely-used Java-based cache because it’s robust, proven, full-featured, and integrates with other popular libraries and frameworks. Ehcache scales from in-process caching, all the way to mixed in-process/out-of-process deployments with terabyte-sized caches.
翻译就是:Ehcache是一个开源,标准的cache来提高性能,卸载数据库并简化扩展性。是被最广泛使用的基于java的cache,由于它的健壮性,久经考验,功能全面以及能和其他流行的库或者框架融合。Ehcache一直从进程内扩展刀混合进程内/进程外部署的TB级数据的cache。

2.特性

http://www.ehcache.org/about/features.html
主要的特性有:
1. 快速
2. 简单
3. 多种缓存策略
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以通过RMI、可插入API等方式进行分布式缓存
7. 具有缓存和缓存管理器的侦听接口
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
9. 提供Hibernate的缓存实现

使用

http://www.ehcache.org/documentation/3.0/getting-started.html
从官网给出的描述可以看到如果基于程序配置和XML格式配置来创建一个cache。

1.通过程序配置

IDE环境:intellij14 + maven
maven依赖:

<dependency>
        <groupId>org.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>3.0.0.m4</version>
</dependency>

一个简单的示例:

    CacheManager cacheManager
        = CacheManagerBuilder.newCacheManagerBuilder() 
            .withCache("preConfigured",     CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10))) 
    .build(); 
    cacheManager.init(); 

    Cache<Long, String> preConfigured =
    cacheManager.getCache("preConfigured", Long.class, String.class); 
    Cache<Long, String> myCache = cacheManager.createCache("myCache",       acheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10)).build());

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

    cacheManager.removeCache("preConfigured"); 

    cacheManager.close(); 

我们也可以封装成一个泛型来创建各种k,v的cache:
示例如下:

/**
* cache的配置,指定名字,容量和ttl
*/
public class CacheConfig {
    private String cacheName;
    private int entrySize;
    private int timeToLiveSecond;

    public CacheConfig(String cacheName, int entrySize, int timeToLive) {
        this.cacheName = cacheName;
        this.entrySize = entrySize;
        this.timeToLiveSecond = timeToLive;
    }

    public String getCacheName() { return this.cacheName; }
    public int getEntrySize() { return this.entrySize; }
    public int getTimeToLiveSecond() { return this.timeToLiveSecond; }
}

/**
     * 
     * @param cacheConfig:cache的配置,如上
     * @param kClass
     * @param vClass
     * @param <K>
     * @param <V>
     * @return
     */
public static <K, V> Cache<K, V> createCache(CacheConfig cacheConfig, Class<K> kClass, Class<V> vClass) {
        try {
            String cacheName = cacheConfig.getCacheName();
            int entrySize = cacheConfig.getEntrySize();
            int ttl = cacheConfig.getTimeToLiveSecond();

            Expiry ttlExpiry = Expirations.timeToLiveExpiration(new Duration(ttl, TimeUnit.SECONDS));
            CacheManager manager = CacheManagerBuilder.newCacheManagerBuilder()
                    .withCache(cacheName,
                            CacheConfigurationBuilder.newCacheConfigurationBuilder()
                                    .withExpiry(ttlExpiry)
                                    .usingEvictionPrioritizer(Eviction.Prioritizer.LRU)
                                    .withResourcePools(ResourcePoolsBuilder.newResourcePoolsBuilder()
                                            .with(ResourceType.Core.HEAP, entrySize, EntryUnit.ENTRIES, false))
                                    .buildConfig(kClass, vClass))
                    .build(true);
            return manager.getCache(cacheName, kClass, vClass);
        } catch (Exception e) {
            return null;
        }
    }

ehcachejavadoc : http://www.ehcache.org/apidocs/3.0.0.m4/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值