版权声明:请勿作为商业用途!未经博主允许请勿转载!谢谢支持! 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;
});
资源地址
PS:cache2j是本人基于业余兴趣开发,设计上参考了业界优秀开源产品的特点,代码一直在更新,目前并未做任何压力测试(未来会补充),请勿做商业用途,仅供学习交流参考!欢迎大家批评指正,共同学习,谢谢支持!
后续文章我会逐步分享cache2j的设计实现。
转载请声明出处!
contact me: [email protected]