缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。
缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的?
缓存在很多系统和架构中都用广泛的应用,例如:
1.CPU缓存
2.操作系统缓存
3.本地缓存
4.分布式缓存
5.HTTP缓存
6.数据库缓存
等等,可以说在计算机和网络领域,缓存无处不在。可以这么说,只要有硬件性能不对等,涉及到网络传输的地方都会有缓存的身影。
1.生成一个LoadingCache对象
-
LoadingCache userCache = CacheBuilder.newBuilder() -
.maximumSize(10000))//设置缓存上线 -
.expireAfterAccess(10, TimeUnit.MINUTES)//设置时间对象没有被读/写访问则对象从内存中删除 -
.expireAfterWrite(10, TimeUnit.MINUTES)//设置时间对象没有被写访问则对象从内存中删除 -
//移除监听器,缓存项被移除时会触发 -
.removalListener(new RemovalListener<String, UserProfile>() { -
@Override -
public void onRemoval(RemovalNotification<String, UserProfile> notification) { -
//逻辑 -
} -
} -
}) -
.recordStats() -
//CacheLoader类 实现自动加载 -
.build(new CacheLoader<String, Object>() { -
@Override -
public Object load(String key) { -
//从SQL或者NoSql 获取对象 -
} -
});
2.CacheBuilder方法
1) LoadingCache build(CacheLoader loader) : LoadingCache对象创建
-
public <K1 extends K, V1 extends V> LoadingCache<K1, V1> build( -
CacheLoader<? super K1, V1> loader) { -
checkWeightWithWeigher(); -
return new LocalCache.LocalLoadingCache<K1, V1>(this, loader); -
}
2)CacheBuilder.maximumSize(long size)方法:配置缓存数量上限,快达到上限或达到上限,处理了时间最长没被访问过的对象或者根据配置的被释放的对象

本文介绍了缓存的重要性和在计算机领域的广泛应用,重点讲解了Guava的LoadingCache,包括如何创建、配置缓存,如maximumSize、expireAfterAccess等方法的使用,以及统计功能和数据移除策略。此外,还讨论了LoadingCache的各种操作,如get、put、refresh等,并提到了主动和被动数据移除的方法。
最低0.47元/天 解锁文章
2421

被折叠的 条评论
为什么被折叠?



