Guava Cache介绍

1、缓存回顾:

使用场景:互联网,数据越来越多,用户越来越多,并发量、吞吐量越来越大

  1. 使用数据库存储,分库分表,也不能满足要求,使用缓存,减轻数据库的压力
  2. 临时存储的数据
  3. 其他的场景:Session分离、分布式锁

缓存:服务器端

本地缓存(local cache):CurrentHashMap、Ehcache、Guava Cache

缓存在应用服务器,全局变量,JVM缓存

  • 优势:和应用程序在同一进程,访问快,没有网络开销,一般不会崩
  • 缺点:容量小,每个JVM有一份,有数据冗余

分布式缓存:Redis、Memcached、Tair(阿里、美团)、EVCache(AWS)、Aerospike

  • 优势:空间优势、在应用中共享(session共享)、高可用(主从)、高扩展(分区)、集群
  • 缺点:资源、网络开销、数据一致性(AP)

GuavaCache、Tair、EVCache、Aerospike比较

GuavaCacheTairEVCacheAerospike
类别本地缓存(JVM缓存)分布式缓存分布式缓存分布式NoSQL数据库
应用高并发本地缓存阿里、美团Netflix、AWS互联网广告行业(国外)
性能较高很高较高
持久化
集群

2、Guava Cache介绍

2.1、JVM缓存

        JVM 缓存,是堆缓存。其实就是创建一些全局容器,比如List、Set、Map等。这些容器用来做数据存储。

这样做的问题:

  • 不能按照一定的规则淘汰数据,如 LRU,LFU,FIFO 等。
  • 清除数据时的回调通知,并发处理能力差,针对并发可以使用CurrentHashMap,但缓存的其他功能需要自行实现
  • 缓存过期处理,缓存数据加载刷新等都需要手工实现

2.2、Guava Cache

  • Guava是Google提供的一套Java工具包,而Guava Cache是一套非常完善的本地缓存机制(JVM缓存)。
  • Guava cache的设计来源于CurrentHashMap,可以按照多种策略来清理存储在其中的缓存值且保持很高的并发读写性能。

3、Guava Cache应用场景

本地缓存的应用场景:

  • 对性能有非常高的要求
  • 不经常变化
  • 占用内存不大
  • 有访问整个集合的需求
  • 数据允许不时时一致

guava cache:高并发,不需要持久化
currentHashMap:高并发
Ehcached:持久化 二级缓存

Guava Cache 的优势:

  • 缓存过期和淘汰机制

        在GuavaCache中可以设置Key的过期时间,包括访问过期和创建过期,GuavaCache在缓存容量达到指定大小时,采用LRU的方式,将不常使用的键值从Cache中删除

  • 并发处理能力
    • GuavaCache类似CurrentHashMap,是线程安全的。
    • 提供了设置并发级别的api,使得缓存支持并发的写入和读取
    • 采用分离锁机制,分离锁能够减小锁力度,提升并发能力
    • 分离锁是分拆锁定,把一个集合看分成若干partition, 每个partiton一把锁。ConcurrentHashMap就是分了16个区域,这16个区域之间是可以并发的。GuavaCache采用Segment做分区。
  • 更新锁定
    • 一般情况下,在缓存中查询某个key,如果不存在,则查源数据,并回填缓存。(Cache Aside Pattern)
    • 在高并发下会出现,多次查源并重复回填缓存,可能会造成源的宕机(DB),性能下降
    • GuavaCache可以在CacheLoader的load方法中加以控制,对同一个key,只让一个请求去读源并回填缓存,其他请求阻塞等待。
  • 集成数据源
    • 一般我们在业务中操作缓存,都会操作缓存和数据源两部分
    • 而GuavaCache的get可以集成数据源,在从缓存中读取不到时可以从数据源中读取数据并回填缓存
  • 监控缓存加载/命中情况

    统计

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值