Ehcache缓存 Java代码方式初始化

本文详细介绍如何使用EHCache 3.8.1版本进行缓存管理配置,包括初始化CacheManager,配置基于堆内存、内存和磁盘的资源池,设置并发级别,以及自定义时间源和序列化方式。

ehcache版本: 3.8.1

        <dependency>
            <groupId>org.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>3.8.1</version>
        </dependency>

初始化CacheManager,配置以注释方式出现在代码中:

    public CacheManager getCacheManager() {
        if (Objects.isNull(cacheManager)) {
            synchronized ("syn") {
                if (Objects.isNull(cacheManager)) {
                    System.getProperty("net.sf.ehcache.enableShutdownHook", "true");
                    cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
                            .with(CacheManagerBuilder.persistence(new File(PATH)))
                            .withCache(CACHE_NAME,
                                    CacheConfigurationBuilder
                                            .newCacheConfigurationBuilder(String.class, String.class
                                                    , ResourcePoolsBuilder.newResourcePoolsBuilder()
                                                            // 基于堆内存
                                                            .heap(10, EntryUnit.ENTRIES)
                                                            // 基于内存
                                                            .offheap(9000, MemoryUnit.MB)
                                                            // 基于磁盘
                                                            .disk(20, MemoryUnit.GB, true))
                                            // 磁盘存储分段,默认16
                                            .add(new OffHeapDiskStoreConfiguration(16))
                                            // key序列化。spi: implements Serializer
                                    .withKeySerializer(new EhcStrSerializer())
                                            // value序列化
                                            .withValueSerializer(new EhcStrSerializer())
                                            // 过期时间。
                                    .withExpiry(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofDays(3)))
                                            // 并发级别
                                            .withDispatcherConcurrency(128)
                                    // 自定义时间增加,性能比SystemTimeSource好些 @Param granularity 增加ms数, @Param systemUpdatePeriod 时间重置系统时间
                            ).using(new TickingTimeSource(10L, 1000L))
                            .build(true);
                }
            }
        }
        return cacheManager;
    }

获取Cache:

 public Cache<String, String> getCache() {
        if (Objects.isNull(cacheManager)) {
            this.getCacheManager();
        }
        if (Objects.isNull(cache)) {
            synchronized ("syn") {
                if (Objects.isNull(cache)) {
                    cache = cacheManager.getCache(CACHE_NAME, String.class, String.class);
                }
            }
        }
        return cache;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值