LoadingCache

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

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

 

缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。

 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的?

 缓存在很多系统和架构中都用广泛的应用,例如:

 1.CPU缓存 
 2.操作系统缓存 
 3.本地缓存 
 4.分布式缓存 
 5.HTTP缓存 
 6.数据库缓存 
 等等,可以说在计算机和网络领域,缓存无处不在。可以这么说,只要有硬件性能不对等,涉及到网络传输的地方都会有缓存的身影。


1.生成一个LoadingCache对象

  1.  
  2. LoadingCache userCache = CacheBuilder.newBuilder()

  3. .maximumSize(10000))//设置缓存上线

  4. .expireAfterAccess(10, TimeUnit.MINUTES)//设置时间对象没有被读/写访问则对象从内存中删除

  5. .expireAfterWrite(10, TimeUnit.MINUTES)//设置时间对象没有被写访问则对象从内存中删除

  6. //移除监听器,缓存项被移除时会触发

  7. .removalListener(new RemovalListener<String, UserProfile>() {

  8. @Override

  9. public void onRemoval(RemovalNotification<String, UserProfile> notification) {

  10. //逻辑

  11. }

  12. }

  13. })

  14. .recordStats()

  15. //CacheLoader类 实现自动加载

  16. .build(new CacheLoader<String, Object>() {

  17. @Override

  18. public Object load(String key) {

  19. //从SQL或者NoSql 获取对象

  20. }

  21. });

  22.  

2.CacheBuilder方法 
1) LoadingCache build(CacheLoader loader) : LoadingCache对象创建

  1. public <K1 extends K, V1 extends V> LoadingCache<K1, V1> build(

  2. CacheLoader<? super K1, V1> loader) {

  3. checkWeightWithWeigher();

  4. return new LocalCache.LocalLoadingCache<K1, V1>(this, loader);

  5. }

2)CacheBuilder.maximumSize(long size)方法:配置缓存数量上限,快达到上限或达到上限,处理了时间最长没被访问过的对象或者根据配置的被释放的对象

3)expireAfterAccess(long, TimeUnit):缓存项在给定时间内没有被读/写访问,则回收。请注意这种缓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值