概述
2019独角兽企业重金招聘Python工程师标准>>>
1、介绍
LoadingCache是Google guava包下的本地缓存功能 com.google.common.cache。
原理类似于hashmap,如果缓存中没有对应的结果,则调用load方法去请求加载
特别是缓存一些MySQL中不怎么修改的参数信息,可以大大减少查询次数
注意:load方法返回的结果不能为null,否则会报错,可以使用Optional来封装结果
2、代码demo
-
1、maven依赖
<!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>22.0</version> </dependency>
-
2、代码示例
package com.surfilter.mass; import com.google.common.cache.*; import java.util.Optional; import java.util.concurrent.TimeUnit; /** * [@Author](https://my.oschina.net/arthor) liufu * @CreateTime 2018/4/9 18:17 */ public class LoadingCacheTest { public static void main(String[] args) { LoadingCache<String, Optional<String>> cache = CacheBuilder.newBuilder() //设置并发级别为8,并发级别是指可以同时写缓存的线程数 .concurrencyLevel(8) //设置写缓存后8秒钟过期 .expireAfterWrite(8, TimeUnit.SECONDS) //设置缓存容器的初始容量为10 .initialCapacity(10) //设置缓存最大容量为100,超过100之后就会按照LRU最近虽少使用算法来移除缓存项 .maximumSize(100) //设置要统计缓存的命中率 .recordStats() //设置缓存的移除通知 .removalListener(new RemovalListener<Object, Object>() { [@Override](https://my.oschina.net/u/1162528) public void onRemoval(RemovalNotification<Object, Object> notification) { System.out.println(notification.getKey() + " was removed, cause is " + notification.getCause()); } }) //build方法中可以指定CacheLoader,在缓存不存在时通过CacheLoader的实现自动加载缓存 .build(new CacheLoader<String, Optional<String>>() { [@Override](https://my.oschina.net/u/1162528) public Optional<String> load(String key) throws Exception { return Optional.ofNullable(loadRealData(key)); } } ); //报空指针异常,不能传入null //Optional<String> optional = cache.getUnchecked(null); System.out.println(cache.getUnchecked("liufu").orElse("默认值")); System.out.println(cache.getUnchecked("aaliuf").orElse("默认值")); //debug发现,这一行没有进入下面的loadRealData方法 System.out.println(cache.getUnchecked("aaliuf").orElse("默认值")); } public static String loadRealData(String key){ if (key.startsWith("aa")){ return key; } return null; } }
转载于:https://my.oschina.net/liufukin/blog/2222474
最后
以上就是勤劳秀发为你收集整理的19、LoadingCache1、介绍2、代码demo的全部内容,希望文章能够帮你解决19、LoadingCache1、介绍2、代码demo所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复