没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
如何基于如何基于LoadingCache实现实现Java本地缓存本地缓存
主要介绍了如何基于LoadingCache实现Java本地缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工
作具有一定的参考学习价值,需要的朋友可以参考下
这篇文章主要介绍了如何基于LoadingCache实现Java本地缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
有一定的参考学习价值,需要的朋友可以参考下
前言前言
Guava是Google开源出来的一套工具库。其中提供的cache模块非常方便,是一种与ConcurrentMap相似的缓存Map。
官方地址:https://github.com/google/guava/wiki/CachesExplained
开始构建开始构建
一一. 添加依赖添加依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>27.1-jre</version>
</dependency>
二二.创建创建 CacheLoader
LoadingCache<Long, String> cache = CacheBuilder.newBuilder()
//缓存池大小,在缓存项接近该大小时, Guava开始回收旧的缓存项
.maximumSize(GUAVA_CACHE_SIZE)
//设置时间对象没有被读/写访问则对象从内存中删除(在另外的线程里面不定期维护)
.expireAfterAccess(10, TimeUnit.MINUTES)
//移除监听器,缓存项被移除时会触发
.removalListener(new RemovalListener <Long, String>() {
@Override
public void onRemoval(RemovalNotification<Long, String> rn) {
//执行逻辑操作
}
})
//开启Guava Cache的统计功能
.recordStats()
.build(cacheLoader);
三三.个人封装的工具类个人封装的工具类
package com.xxx;
import com.google.common.cache.*;
import org.slf4j.Logger;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
public class CacheManager {
private static Logger log = Log.get();
/** 缓存项最大数量 */
private static final long GUAVA_CACHE_SIZE = 100000;
/** 缓存时间:天 */
private static final long GUAVA_CACHE_DAY = 10;
/** 缓存操作对象 */
private static LoadingCache<Long, String> GLOBAL_CACHE = null;
static {
try {
GLOBAL_CACHE = loadCache(new CacheLoader <Long, String>() {
@Override
public String load(Long key) throws Exception {
// 处理缓存键不存在缓存值时的处理逻辑
return "";
}
});
资源评论
weixin_38727825
- 粉丝: 3
- 资源: 900
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功