贴一个 优势:Guava Cache是一个全内存的本地缓存实现,它提供了线程安全的实现机制。整体上来说Guava cache 是本地缓存的不二之选,简单易用,性能好。
我的觉得 简单好用,没有redis 那么复杂有那么多配置。
下面实现它的用法:
private static LoadingCache loadingCache = CacheBuilder.newBuilder()
//初始化缓存容量
.initialCapacity(1000)
//缓存容量最大值//超过最大值:LRU进行清除.
.maximumSize(10000)
//缓存有效期
.expireAfterAccess(12, TimeUnit.HOURS).build(
new CacheLoader() {
//默认的数据加载实现,当调用get取值: null调用 load@Override
public String load(String s) throws Exception {
return "null";
}
});
LRU 算法的简介:
LRU算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
具体实现:
1. 新数据插入到链表头部;
2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;
3. 当链表满的时候,将链表尾部的数据丢弃。
下面是本地缓存的使用了:
public static void setKey(String key,String value){
loadingCache.put(key,value);
//put 放入值。
}
public static String getKey(String key){
String value = https://www.it610.com/article/null;
try {
value = loadingCache.get(key);
if ("null".equals(value)){
return null;
}
return value;
}catch (Exception e){
logger.error("localCache get error ",e);
}
return null;
}
【java缓存之 本地缓存(LoadingCache)】一个设置值,一个获取设置的值。