概述
Spring Boot 使用Caffeine缓存
- Caffeine官方的介绍
- demo
- Caffeine配置参数
Caffeine是Java8重写Guava缓存,取代Guava缓存。
Spring Cache相关注解基础请查看这篇文章
Caffeine官方的介绍
caffeine官网
Caffeine是基于Java8的高性能,接近完美的缓存库。
demo
pom.xml
引入spring-context-support
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
或者spring-boot-starter-cache
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
Caffeine配置参数
属性 | 说明 |
---|---|
initalCapacity | 初始空间大小 |
maximumSize | 缓存最大条数 |
maximumWeight | 缓存的最大权重 |
expireAfterAccess | 最后一次写入或访问后经过固定时间过期 |
expireAfterWrite | 最后一次写入后经过固定时间过期 |
refreshAfterWrite | 创建缓存或者最近一次更新缓存后经过固定的时间间隔,刷新缓存 |
weakKeys | 打开key的弱引用 |
weakValues | 打开value的弱引用 |
softValues | 打开value的软引用 |
recordStats | 开发统计功能 |
- 注意
refreshAfterWrite 要实例 LoadingCache 否则报错
java.lang.IllegalStateException: refreshAfterWrite requires a LoadingCache
application.yml
spring:
cache:
cache-names:
- cache1
- cache2
type: caffeine
caffeine:
spec:
maximumSize=500,expireAfterAccess=600s
yml文件中的配置也可以通过bean来配置
CacheConfig.java
package com.jsong.wiki.blog.config;
import com.github.benmanes.caffeine.cache.CacheLoader;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.springframework.cache.CacheManager;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
@Configuration
public class CacheConfig {
@Bean("caffeineCacheManager")
public CacheManager caffeineCacheManager() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
cacheManager.setCaffeine(Caffeine.newBuilder()
.maximumSize(10_1000)
.expireAfterAccess(5, TimeUnit.SECONDS));
return cacheManager;
}
/* 如果配置refreshAfterWrite要有这个bean,否则报错
java.lang.IllegalStateException: refreshAfterWrite requires a LoadingCache*/
@Bean
public CacheLoader<Object, Object> cacheLoader() {
CacheLoader<Object, Object> cacheLoader = new CacheLoader<Object, Object>() {
@Nullable
@Override
public Object load(@NonNull Object key) throws Exception {
return null;
}
};
return cacheLoader;
}
}
CacheService.java
package com.jsong.wiki.blog.service;
import org.springframework.cache.annotation.*;
import org.springframework.stereotype.Component;
@EnableCaching
@CacheConfig(cacheNames = "caffeineCacheManager")
@Component
public class CacheService {
@Cacheable(value = "cache1", key = "#root.target")
public String getName() {
System.out.println("cache1");
return "cache1";
}
}
最后
以上就是正直书本为你收集整理的Spring Boot 使用Caffeine缓存的全部内容,希望文章能够帮你解决Spring Boot 使用Caffeine缓存所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复