함께 만들고 함께 성장하기 위해 함께 노력하십시오! "너겟 데일리 뉴플랜 · 8월 업데이트 챌린지" 참여 18일차 입니다 . 이벤트 상세보기 클릭
카페인 소개
공식 웹사이트 주소: github.com/ben-manes/c…
Caffeine은 고성능 로컬 캐싱 라이브러리입니다.
샘플 프로그램 환경 구성
이 샘플 프로그램의 종속 환경 구성은 다음과 같습니다.
- JDK 버전: 1.8
- 카페인 버전: 2.9.3
- SpringBoot 버전: 2.7.0
SpringBoot 프로젝트에서 Caffeine을 통합하는 단계
SpringBoot는 다음 두 가지 방법으로 Caffeine을 통합합니다.
- 방법 1: Caffeine 종속성을 직접 도입한 다음 Caffeine 방법을 사용하여 캐싱을 구현합니다.
- 방법 2: Caffeine 및 Spring Cache 종속성을 도입하고 SpringCache 주석 방법을 사용하여 캐싱을 구현합니다.
여기서는 방법 1 만 소개 합니다 .
1. pom.xml
파일 에 caffeine
관련 종속성 을 도입합니다.
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
</dependency>
复制代码
2. 캐시 구성 클래스 작성 - CacheConfig.java
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;
@Configuration
public class CacheConfig {
@Bean
public Cache<String, Object> caffeineCache() {
return Caffeine.newBuilder()
// 设置最后一次写入或访问后两个小时后过期
.expireAfterWrite(7200, TimeUnit.SECONDS)
// 初始的缓存空间大小
.initialCapacity(100)
// 缓存的最大条数
.maximumSize(1000)
.build();
}
}
复制代码
캐시 구성 클래스에서 다음 설정을 수행했습니다.
- 마지막 쓰기 또는 액세스 후 2시간 후에 만료되도록 설정
- 초기 캐시 공간 크기 설정
- 최대 캐시 수 설정
카페인의 몇 가지 일반적인 구성:
구성 | 값 유형 | 설명 |
---|---|---|
만료 후액세스 | 지속 | 마지막 쓰기 또는 액세스 후 만료되는 기간을 지정합니다. |
만료 후 쓰기 | 지속 | 마지막 쓰기 캐시가 만료된 후 시간을 지정합니다. |
초기용량 | 정수 | 초기 캐시 공간 크기 |
최대 크기 | 긴 | 최대 캐시 수 |
최대 무게 | 긴 | 캐시의 최대 무게 |
새로고침 후쓰기 | 지속 | 캐시가 생성되거나 캐시가 마지막으로 업데이트된 후 지정된 시간 간격 후에 캐시가 새로 고쳐집니다. |
알아채다:
maximumSize
및maximumWeight
동시에 사용할 수 없습니다.expireAfterWrite
expireAfterAccess
둘 다 존재expireAfterWrite
합니다.
3. 데이터 접근
// 1. 注入
@Resource
private Cache<String, Object> caffeineCache;
// 2. 存储数据
caffeineCache.put("access_token", token);
// 3. 读取数据
String token = (String) caffeineCache.asMap().get("access_token");
复制代码
데이터를 읽을 때 먼저 카페인 캐시, 즉 2단계에서 캐시 구성 클래스에서 구성한 캐시를 주입해야 합니다. 데이터를 저장하기 위해 캐시 클래스의 메소드를 호출하고 캐시 클래스의 put(...)
메소드는 다음 과 같습니다. 데이터를 읽기 위해 호출됩니다 get(...)
.