前言: guava缓存是针对服务器的部署的本地内存缓存,当服务重启时缓存会失效,如果是分布式服务,如果访问量比较大,则服务重新发布时,需要对访问数据进行保护,防止数据库被击穿。比如说可以利用redis作为二级缓存。
1、google开源guava缓存
1-1、pom引入依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
<scope>compile</scope>
</dependency>
1-2、java代码引入操作
public class GuavaCacheUtils {
private GuavaCacheUtils() {
throw new IllegalStateException("GuavaCacheUtils class");
}
public static final Cache<String,Object> modelCache = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterAccess(30, TimeUnit.MINUTES)
.concurrencyLevel(10)
.build();
}
说明:
参数1,代表最大缓存的size
参数2,代表缓存的时间
参数3,代表缓存初始化空间大小
2、github开源caffeine缓存
2-1、pom引入依赖
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
2-2、java代码引入操作
@Configuration
public class CacheConfig {
@Bean
public Cache<String, Object> caffeineCache() {
return Caffeine.newBuilder()
// 设置最后一次写入或访问后经过固定时间过期
.expireAfterWrite(20, TimeUnit.MINUTES)
// 初始的缓存空间大小
.initialCapacity(100)
// 缓存的最大条数
.maximumSize(1000)
.build();
}
}