LoadingCache<String, List<Order>> cacheOrders = CacheBuilder.newBuilder()
.expireAfterWrite(1, TimeUnit.MINUTES)//表示在写入内存1分钟后该数据过期
.expireAfterAccess(1, TimeUnit.MINUTES)//表示如果1分钟之内没有使用该缓存则数据过期 每调用一次缓存有效时间都刷新为一分钟
.refreshAfterWrite(1, TimeUnit.MINUTES)//只阻塞当前数据加载线程,其他线程返回旧值
.concurrencyLevel(8)//设置并发级别为8,并发级别是指可以同时写缓存的线程数
.maximumSize(100)//设置最大缓存数 超过限制采用最少使用淘汰机制
.build(new CacheLoader<String, List<Order>>() {
                return orderList;

}
});

当然,除此之外,缓存还有其他初始化设置,例如设置要统计缓存的命中率等,guava的缓存还可以以异步线程的方式刷新本地的缓存,这里不做详细说明

相关文章:

  • 2021-10-19
  • 2021-07-24
  • 2021-10-16
  • 2022-12-23
  • 2022-01-22
  • 2021-10-31
猜你喜欢
  • 2022-02-01
  • 2021-09-24
  • 2022-12-23
  • 2022-02-09
  • 2021-11-14
  • 2021-11-10
相关资源
相似解决方案