Java开发利器之Guava Cache

本文详细介绍了Guava Cache在Java开发中的重要性,包括缓存的意义、优缺点,以及Guava Cache的特色。Guava Cache提供缓存过期和淘汰机制,线程安全的并发处理能力,更新锁定功能,以及与数据源的集成。文章还讨论了不同类型的缓存获取和更新方法,以及Builder配置,最后给出了ManualCache和LoadingCache的使用示例。
摘要由CSDN通过智能技术生成

前言

缓存技术被认为是减轻服务器负载、降低网络拥塞、增强Web可扩展性的有效途径之一,其基本思想是利用客户访问的时间局部性(Temproral Locality)原理, 将客户访问过的内容在Cache中存放一个副本,当该内容下次被访问时,不必连接到驻留网站,而是由Cache中保留的副本提供。

在企业Web应用中,通过缓存技术能够提高请求的响应速度;减少系统IO开销;降低系统数据读写压力...

缓存的意义

首先我们要知道,在我们开发过程中,为什么要使用缓存,缓存能够为我们带来哪些好处!

优点

  • 通过缓存承载系统压力,减少对系统或网络资源访问而引起的性能消耗,在流量较大时能够很好地减少系统拥塞。
  • 缓存一般都是使用存取非常快的组件实现,通过缓存能够快速响应客户端请求,从而降低客户访问延迟,提审系统响应速度。
  • 在配备负载均衡的应用架构中,通过缓存静态资源能够有效减少服务器负载压力。
  • 当下游应用故障时,通过返回缓存数据能够在一定程度上增强应用容错性。

缺点

  • 缓存数据与实际数据不一致问题问题。
  • 高并发场景时存在缓存击穿、缓存穿透、缓存雪崩等问题。

总的来说,缓存主要是针对高频访问但低频更新的数据,从而加快服务器响应与原资源访问压力。

Guava Cache是一个相对比较简单并且容易理解的本地缓存框架,今天主要以此为开端来认识并学习如何使用缓存。

Guava Cache特色

本地缓存我们可以简单的理解为Map,将数据保存到Map(内存)中,下次使用该数据时,通过key直接从Map中取即可。但是使用Map会有一些几个问题需要考虑:

  • 缓存的容量。不可能无限制的对数据进行缓存,当数据较大时占用系统资源会导致主业务受影响。
  • 缓存的清理。有些缓存使用频率很低,如果一直占用资源也是一种浪费。
  • 并发访问时的效率问题。缓存更新时瞬时对系统、网络资源的访问导致故障。
  • 缓存使用情况评估

当然以上问题我们通过我们对Map包装下即可实现,当然Guava Cache也就是基于这种思想,底层原理则是基于Map实现,我们看下其有哪些特色:

  • 缓存过期和淘汰机制

通过设置Key的过期时间,包括访问过期和创建过期;设置缓存容量大小,采用LRU的方式,选择最近最久的缓存进行删除。

  • 并发处理能力

Cache主要基于CurrentHashMap实现线程安全;通过对key的计算,基于分段锁,提高缓存读写效率,降低锁的粒度,提升并发能力。

  • 更新锁定

在缓存中查询某个key&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值