1.本地缓存有ehcache,guava cache,caffein这几种常用的实现,下面介绍caffeine在springboot中的使用
- caffeine官网:github-caffein
- jsr-107缓存规范与spring的对照:jsr-107缓存规范与spring的对照
- caffeine-plus:caffeine-plus
单独使用:
2.添加依赖
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>3.0.1</version>
</dependency>
如果启动报找如下的类似错误,请试着降低caffeine版本
Error:(3,42) java: 无法访问com.github.benmanes.caffeine.cache.Cache
3.添加配置,项目只用到超时过期这种简单缓存,以下为简单配置
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
/**
* @Author: lyr
* @Date: 2021-04-28 10:55
*/
@Configuration
public class CaffeinConfig {
@Bean
public Cache<String, Object> caffeineCache() {
return Caffeine.newBuilder()
// 多久过期
.expireAfterWrite(10, TimeUnit.MINUTES)
// 初始的缓存空间大小
.initialCapacity(10)
// 缓存的最大条数
.maximumSize(1000)
.build();
}
}
4.简单封装的util,不直接使用cache是便于以后做相应的实现修改
import com.github.benmanes.caffeine.cache.Cache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: lyr
* @Date: 2021-04-28 14:33
*/
@Component
public class LocalCacheUtil {
@Autowired
Cache<String, Object> cache;
public void add(String key,Object value){
cache.put(key,value);
}
public Object get(String key){
return cache.getIfPresent(key);
}
public void delete(String key){
cache.invalidate(key);
}
public void deleteAll(){
cache.invalidateAll();
}
}
参考博客:Caffeine Cache 进程缓存之王
SpringBoot 使用 Caffeine 本地缓存
SpringBoot 使用 Caffeine 本地缓存