google guava cache
引用maven依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
java代码
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
/**
* Created by zhengyong on 16/10/9.
*/
public class GuavaCacheTest {
private static LoadingCache<String, String> graphs = null;
public static void main(String[] args) {
loadDataToCache();
String value1 = getValue("mykey");
String value2 = getValue("mykey");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
String value3 = getValue("mykey");
String value4 = getValue("mykey");
String value5 = getValue("mykey2");
String value6 = getValue("mykey2");
}
/**
* 根据key获取值
*
* @param key 查询条件key
* @return 返回value值
*/
private static String getValue(String key) {
String resultVal = null;
try {
resultVal = graphs.get(key);
} catch (ExecutionException e) {
e.printStackTrace();
}
System.out.println(String.format("get key=%s return value=%s", key, resultVal));
return resultVal;
}
/**
* 声明加载数据源方式
*/
private static void loadDataToCache() {
graphs = CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(10, TimeUnit.MILLISECONDS).build(new CacheLoader<String, String>() {
public String load(String key) {
System.out.println(String.format("load '%s' from database...",
key));
return "value_" + key;
}
});
}
}
运行结果
load 'mykey' from database...
get key=mykey return value=value_mykey
get key=mykey return value=value_mykey
load 'mykey' from database...
get key=mykey return value=value_mykey
get key=mykey return value=value_mykey
load 'mykey2' from database...
get key=mykey2 return value=value_mykey2
get key=mykey2 return value=value_mykey2