Spring Data Couchbase
Cache Abstraction 어노테이션 사용하기
build.gradle 작성
Spring Data Couchbase 의존성을 추가해준다.
implementation 'org.springframework.data:spring-data-couchbase'
docker로 Couchbase 서버 실행하기
캐싱 데이터를 저장할 Couchbase 서버를 docker를 이용해 간단히 실행한다.
docker run -d --name couchbase-local -p 8091-8096:8091-8096 -p 11210-11211:11210-11211 couchbase
Cache Configuration 작성
Spring Data Couchbase를 사용하기 위해서 가장 첫번째 해야할 일은 couchbase 서버와 연결하는 것이다.
docker compose파일로 띄운 couchbase 서버에 연결하기 위해 아래와 같이 Configuration을 작성한다.
@Cacheable
과 같은 어노테이션을 사용해 캐싱하려면, Configuration에@EnableCaching
어노테이션을 명시해주어야 한다.CouchbaseCacheManager 빌더에서 CacheName과 CacheConfiguration을 등록해주어야
@Cacheable
어노테이션에서 사용할 수 있다.
@EnableCaching
@Configuration
public class CouchbaseCacheConfig {
@Value("${couchbase.url}")
private String url;
@Value("${couchbase.username}")
private String username;
@Value("${couchbase.password}")
private String password;
@Value("${couchbase.bucket}")
private String bucket;
@Bean(destroyMethod = "disconnect")
public Cluster cluster() {
return Cluster.connect(url, username, password);
}
@Bean
public CouchbaseCacheManager couchbaseCacheManager() {
return CouchbaseCacheManager.builder(new SimpleCouchbaseClientFactory(cluster(), bucket, null))
.withCacheConfiguration("post",
CouchbaseCacheConfiguration.defaultCacheConfig()
.entryExpiry(Duration.ofSeconds(180L))).build();
}
}
캐시 어노테이션 사용하기
CouchbaseCacheManager 빈 등록 시 추가해준 CacheConfiguration의 이름을 명시하면, 해당 CacheConfiguration의 속성을 사용해 캐싱된다.
@Cacheable(cacheNames = "post")
public List<Post> getTodaysPosts(TOPIC topic) {
return postRepository.getTodaysPosts(topic);
}
별도의 키를 지정하거나 KeyGenerator를 사용하지 않는다면
post::NEWS
키에 메서드의 반환 값이 저장된다.캐시에 데이터가 없는 상태일 때 요청이 오면 캐시에 데이터를 저장하게 되고, 캐시에 데이터가 있는 상태라면 캐시의 데이터를 조회해 곧바로 반환하게 된다.
Last updated