guava里面如何实现缓存

为了提高遍历大量记录时的效率,通常需要利用本地缓存。Guava Cache提供了一种解决方案,允许在内存中存储预先计算或检索的结果,以避免重复昂贵的查找操作。它特别适合那些预期会被多次查询的键,并且确保缓存数据量不超过内存限制,不同于集中式缓存服务器。
摘要由CSDN通过智能技术生成

  我们经常会遇到一些本地缓存的场景,比如遍历N条记录,依据记录里面的某个ID,获取到相应的名称,如果遍布的时候逐条去调用外部依赖的服务查询名称,显然会比较慢,如果把获取到的记录保存到本地的缓存里面,先判断本地缓存里面是否有记录存在,如果能够找到记录则直接取本地的数据。显然这样处理的话效率会提升不少。

  相对于ConcurrentMap来讲guava cache适用于:

  • 你愿意消耗一些内存空间来提升速度
  • 你预料到某些键会被查询一次以上
  • 缓存中存放的数据总量不会超出内存容量。本地单机缓存不是集中式缓存服务器。
只要你的场景符合其中的一项,那guava cache就适合你。

加载
   “获取缓存--如果没有--则计算 ”【get - if - absent - compute】原子语义
在调用get时传入一个Callable实例。缓存元素也可以通过Cache.put方法直接插入,但自动加载是首选。因为它更容易推断所有缓存内容的一致性。

CacheLoader
  LoadingCache是附带CacheLoader构建而成的缓存实现。创建自己的CacheLoader通常只需要简单地实现V load(K key) throws Exception方法。
从LoadingCache查询的正规方式是使用get(K)方法。这个方法要么返回已经缓存的值,要么使用CacheLoader向缓存原子地加载新值。
由于C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值