This repository has been archived by the owner on Jan 18, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 13
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()
bucket의 인스턴스가 있으면 다음과 같이 문서를 가져올 수 있으며, 리턴타입은 JSON 문자열을 담은 Future[Option[String]]
입니다.
val doc: Future[Option[String]] = bucket.get("key")
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)