栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Guava缓存浅用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Guava缓存浅用

文章目录
  • Guava简介
  • 一、Guava cache
  • 二、Cache
    • 1.显式put操作置入内存
    • 2.LoadingCache
  • 总结

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

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

private LoadingCache thirdShopMap = CacheBuilder.newBuilder().
    expireAfterWrite(5L, TimeUnit.MINUTES). 
    maximumSize(5000L).
    build(new CacheLoader() {
        @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表达式等特性来实现)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996684.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号