Guava缓存浅用
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
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13