• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Guava缓存浅用

武飞扬头像
老更
帮助1

Guava简介

Java诞生于1995年,在这20年的时间里Java已经成为世界上最流行的编程语言之一。虽然Java语言时常经历各种各样的吐槽,但它仍然是一门在不断发展、变化的语言——除了语言本身与JDK在不断的进化,第三方库、框架也同样是日新月异。Guava正是这样一个现代的库,它简单易用,对Java语言是一个非常好的补充。


一、Guava cache

Guava Cache 是Google Fuava中的一个内存缓存模块,用于将数据缓存到JVM内存中。
提供了get、put封装操作,能够集成数据源 ;
线程安全的缓存,与ConcurrentMap相似,但前者增加了更多的元素失效策略,后者只能显示的移除元素;
Guava Cache提供了多种基本的缓存回收方式
监控缓存加载/命中情况
举个例子
当你需要调接口获得指定的值,比如电商项目需要根据线下店铺id来获得网店信息,那么相同的店铺id,你是否要做缓存来避免重复的去调接口呢,这个时候你觉得用redis又没必要,那么guava cache你值得拥有。
通常,Guava缓存适用于以下情况
愿意花费一些内存来提高速度。
使用场景有时会多次查询key。
缓存将不需要存储超出RAM容量的数据详细配置
缓存的并发级别
Guava提供了设置并发级别的API,使得缓存支持并发的写入和读取。与ConcurrentHashMap类似,Guava cache的并发也是通过分离锁实现。在通常情况下,推荐将并发级别设置为服务器cpu核心数。

二、Cache

话不多说直接开造

1.显式put操作置入内存

浅浅的介绍一下用的俩东西,剩下一些设置自己去参考文档里看

缓存清除策略
基于存活时间的清除策略
expireAfterWrite 写缓存后多久过期
expireAfterAccess 读写缓存后多久过期
存活时间策略可以单独设置或组合配置
基于容量的清除策略
通过CacheBuilder.maximumSize(long)方法可以设置Cache的最大容量数,当缓存数量达到或接近该最大值时,Cache将清除掉那些最近最少使用的缓存
代码如下:

 private LoadingCache<String,Long> thirdShopMap = CacheBuilder.newBuilder().
    expireAfterWrite(5L, TimeUnit.MINUTES). 
    maximumSize(5000L).
    build(new CacheLoader<String, Long>() {
        @Override
        public Long load(String shopId) throws Exception {
        System.out.println("~~~~~~");
        return 1111111111111111L;
        }
        }

2.LoadingCache

使用自定义ClassLoader加载数据,置入内存中。从LoadingCache中获取数据时,若数据存在则直接返回;若数据不存在,则根据ClassLoader的load方法加载数据至内存,然后返回该数据
代码如下:

private LoadingCache<String,Long> thirdShopMap = CacheBuilder.newBuilder().
    expireAfterWrite(5L, TimeUnit.MINUTES). 
    maximumSize(5000L).
    build(new CacheLoader<String, Long>() {
        @Override
        public Long load(String shopId) throws Exception {
        System.out.println("~~~~~~");
        return 1111111111111111L;
        }
    }
        
thirdShopMap.get(key)

Google Guava 中文教程:https://wizardforcel.gitbooks.io/guava-tutorial/content/1.html


总结

Guava是一个非常有用的现代程序库,在Java项目中强烈推荐使用它来取代Apache Commons的一些子项目(例如Lang, Collection, IO等等),除了这里介绍的一些最常用的特性,它还包括缓存、网络、IO、函数式编程等等内容(其中函数式编程在Java 8中可以使用Stream和Lambda表达式等特性来实现)。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfcbbhg
系列文章
更多 icon
同类精品
更多 icon
继续加载