Springboot Caffine 로 컬 캐 시 사용 예시
의지 하 다
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<!-- caffeine -->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.7.0</version>
</dependency>
2.캐 시 설정,단독으로 사용Bean 만 설정 하면 됩 니 다.그리고 데이터 읽 기와 쓰 기 를 진행 합 니 다.여기 에는 강력 한 사용자 정의 설정 이 많이 제공 되 어 있 습 니 다.문서 의 상세 한 설정 을 볼 수 있 습 니 다.
// ,
@Bean
public LoadingCache expiryCache(){
LoadingCache<String, Object> loadingCache = Caffeine.newBuilder()
.initialCapacity(100)
.maximumSize(1000)
// /
.writer(new CacheWriter<Object, Object>() {
@Override
public void write(Object key, Object value) { //
System.out.println("-- --:key=" + key + ", value=" + value);
}
@Override
public void delete(Object key, Object value, RemovalCause cause) { System.out.println("-- --:key=" + key); }
})
.expireAfterAccess(1, TimeUnit.MINUTES) //
.build((String key)->" "); //cacheload ,
loadingCache.put("name"," ");
return loadingCache;
}
테스트 사용:
@Autowired
private LoadingCache loadingCache;
@GetMapping("/get")
public Object getValue(String key){
return loadingCache.get(key);
}
@GetMapping("/add")
public void addValue(String value){
loadingCache.put(value,value);
}
@GetMapping("/delete")
public void deleteValue(String key){
loadingCache.invalidate(key);
loadingCache.invalidateAll();//
}
@GetMapping("/refresh")
public void refreshValue(String key){
// build cacheload
loadingCache.refresh(key);
}
3.CacheManager 설정,spring 캐 시 주석 과 함께 사용
// CacheManager
@Bean(name = "caffeine")
public CacheManager cacheManagerWithCaffeine() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
Caffeine caffeine = Caffeine.newBuilder()
//cache
.initialCapacity(100)
//maximumSize cache ,maximumSize maximumWeight( ) ,
.maximumSize(1000)
//
.expireAfterAccess(500, TimeUnit.SECONDS)
// , cacheLoader
.refreshAfterWrite(10, TimeUnit.SECONDS);
cacheManager.setCaffeine(caffeine);
cacheManager.setCacheLoader(cacheLoader);
cacheManager.setCacheNames(names);// cache, cache
cacheManager.setAllowNullValues(false);//
return cacheManager;
}
cacheload 설정
/**
* Bean,refreshAfterWrite
*/
@Bean
public CacheLoader<Object, Object> cacheLoader() {
return new CacheLoader<Object, Object>() {
@Override
public Object load(Object key) throws Exception { return null;}
// oldValue ,
@Override
public Object reload(Object key, Object oldValue) throws Exception {
System.out.println("--refresh--:"+key);
return oldValue;
}
};
}
다른 것 은 service 에서 spring 의 캐 시 주 해 를 설정 하여 사용 하면 됩 니 다.여기 캡 처 한 장 을 놓 습 니 다.이 주해 용법 들 은 인터넷 에 많 습 니 다.[/code]이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.