Cache2j:进阶之CacheBuilder讲解

版权声明:请勿作为商业用途!未经博主允许请勿转载!谢谢支持! https://blog.csdn.net/u012737673/article/details/79295676

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: [email protected]

猜你喜欢

转载自blog.csdn.net/u012737673/article/details/79295676