Cache2j:进阶之CacheBuilder讲解

本文介绍CacheBuilder的使用方法,包括设置监听器、淘汰策略、统计信息等属性,以及如何通过CacheLoader实现缓存对象的自动更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CacheBuilder是缓存Cache实例的构造器,通过它可以设置相关属性,并利用build方法生成对象。
内部属性:

public final class CacheBuilder<K,V>{
    private CacheListener listener;
    private MonitorType type;
    private Stats stats;

    long ttl = Long.MAX_VALUE;
    long interval = Long.MAX_VALUE;
    int maximum = Integer.MAX_VALUE;
    double factor = 0.2;
    ...
}

CacheListener:缓存对象移除时的监听器,对象被移除时会回调监听器的callback方法;
MonitorType:淘汰策略类型,基于ttl(时间)或者cap(容量)方式;
Stats:缓存状态统计器,选择开启时,会统计缓存的命中信息;
ttl:缓存对象的过期时间(MonitorType.TTL有效),单位ms;
interval:内部Monitor的执行频率,单位ms;
maximum:缓存对象的最大数量(MonitorType.CAP有效);
factor:淘汰因子,基于容量淘汰时有效,缺省值0.2;

参数设置完成后,调用build方法创建实例:

public <K1 extends K,V1 extends V> Cache<K1,V1> build(CacheLoader<? super K1,V1> loader){
    Cache<K1,V1> cache = new Cache(this,loader);
    return cache;
}

方法的入参可以指定一个CacheLoader,作用是当缓存对象被移除时,cacheLoader会自动加载缓存,实现自动更新的效果。另一个重载的方法也可以不指定:

public <K1 extends K,V1 extends V> Cache<K1,V1> build(){
    Cache<K1,V1> cache = new Cache(this,null);
    return cache;
}

具体示例:

Cache<String,Object> cache = CacheBuilder.newBuilder()
            .listener(new DefaultListener())
            .factor(0.1)
            .interval(1000)
            .ttl(5000)
            .maximum(20)
            .monitor(MonitorType.CAP)
            .stats()
            .build((CacheLoader) (key)->{
                return key;
            });


资源地址

Github地址

项目wiki地址

PS:cache2j是本人基于业余兴趣开发,设计上参考了业界优秀开源产品的特点,代码一直在更新,目前并未做任何压力测试(未来会补充),请勿做商业用途,仅供学习交流参考!欢迎大家批评指正,共同学习,谢谢支持!

后续文章我会逐步分享cache2j的设计实现。

转载请声明出处!

contact me: 1261608273@qq.com
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值