Skip to content
This repository has been archived by the owner on Jan 18, 2024. It is now read-only.

Couchbase

Jong Wook Kim edited this page Feb 2, 2017 · 1 revision

Couchbase Java API 2.1을 스칼라에서 사용하기 쉽도록 감싼 비동기 클라이언트 라이브러리입니다.

커넥션 생성하기

다음과 같이 서버가 되는 노드의 주소를 나열하여 클라이언트를 생성할 수 있습니다. 노드 하나의 주소만 입력해도 성능에는 문제 없이 동작할 수 있지만, 그 노드 하나가 정지하는 것에 대비하여 여러 노드를 입력하는 것이 좋습니다. couchbase.bucket으로 특정 버킷을 가져올 수 있습니다.

import com.kakao.mango.couchbase._

val couchbase = Couchbase("couchbase1.server.com:8091", "couchbase2.server.com:8091")
val bucket = couchbase.bucket("default")

노드의 주소가 Seq[String]으로 주어져 있다면 가변인자 호출을 통해 다음과 같이 클라이언트를 만들 수 있습니다.

val nodes: Seq[String] = Seq("couchbase1.server.com:8091", "couchbase2.server.com:8091")
val couchbase = Couchbase(nodes: _*)
val bucket = couchbase.bucket("default")

다음과 같이 커넥션을 종료할 수 있습니다.

couchbase.disconnect()

GET

bucket의 인스턴스가 있으면 다음과 같이 문서를 가져올 수 있으며, 리턴타입은 JSON 문자열을 담은 Future[Option[String]]입니다.

val doc: Future[Option[String]] = bucket.get("key")

PUT

put 연산은 upsert를 수행하며, 방식에 따라 다음과 같은 메소드를 지원합니다.

// TTL 없는 단일 upsert
bucket.put("key", """{"hello": "world"}""")

// TTL을 한시간으로 지정하여 단일 upsert
bucket.put("key", """{"hello": "world"}""", expiry = 3600)

// 여러 문서 upsert
bucket.put(Seq("key1" -> """{"hello": "world"}""", "key2" -> """{"hello": "world"}"""), expiry = 3600)

// (키 -> JSON 문자열)의 시퀀스를 최대 초당 10,000건 upsert
val docs: Seq[(String, String)] = // ...
bucket.put(docs, rate = 10000, expiry = 3600)

// 임의의 오브젝트(case class, map 등)를 JSON으로 변환하여 upsert
val doc = Map("hello" -> "world")
bucket.putObject("key", doc, expiry = 3600)

// 여러 오브젝트를 JSON으로 변환하여 upsert
val docs: Seq[(String, SomeCaseClass)] = // ...
bucket.putObjects(docs, rate = 10000, expiry = 3600)
Clone this wiki locally