基于caffeine本地缓存的实现
1.本地缓存实现
1.1导入依赖
<!-- caffeine 缓存 -->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
1.2 创建缓存spring的bean容器
package org.jeecg.modules.test;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
* 本地缓存
*/
//@Component
public class TestLocalCacheManager implements InitializingBean {
private Cache<String,String> localCache;
/**
* 向缓存中保存数据,如果已经存在则不覆盖
*/
public void putIfNotExist(String key, String value){
if(localCache.getIfPresent(key)==null){
localCache.put(key,value);
}
}
/**
* 根据key获取缓存数据
*
*/
public String get(String key){
return localCache.getIfPresent(key);
}
public void del(String key){
localCache.invalidate(key);
}
/**
* 在bean初始化时,初始化本地缓存
*
*/
@Override
public void afterPropertiesSet() throws Exception {
localCache = Caffeine.newBuilder()
.expireAfterWrite(10, TimeUnit.SECONDS)//写入后过期时间
.expireAfterAccess(10, TimeUnit.SECONDS)//访问过后失效时间
.maximumSize(1000)//初始缓存大小
.build();
}
}
1.3 具体使用
在对应类中注入@Autowired该TestLocalCacheManager类直接和map的使用方法没有什么差异