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