Couchbase之環(huán)境搭建與基于Java的測(cè)試
Couchbase Server (前身是 Membase) 是一個(gè)分布式的面向文檔的 NoSQL 數(shù)據(jù)庫管理系統(tǒng),該系統(tǒng)聯(lián)合了 CouchDB 的簡(jiǎn)單和可靠以及 Memcached 的高性能。
網(wǎng)上有MongoDB與Couchbase的對(duì)比,請(qǐng)參考:
http://www.infoworld.com/d/data-management/nosql-showdown-mongodb-vs-couchbase-214912
Couchbase主頁:http://www.couchbase.com/
本文的目標(biāo)是搭建簡(jiǎn)單的Couchbase環(huán)境并用Java語言進(jìn)行讀寫測(cè)試。
1.準(zhǔn)備工作
1)下載 Couchbase Server ,本文用到的版本是version 2.1.1 for win64 ,2.0在某些機(jī)器上裝不上,內(nèi)核問題。
2)下載 Java相關(guān)類庫
相關(guān)下載鏈接:http://www.couchbase.com/download
2.安裝Couchbase Server
1)安裝過程很簡(jiǎn)單,在官網(wǎng)下載并安裝即可。
2)安裝完成后Couchbase Console程序會(huì)自動(dòng)打開http://localhost:8091地址,這時(shí)候有可能會(huì)打不開,最有可能出現(xiàn)的問題就是端口被占用了。(占用與否,可以用cmd查一下)
這時(shí)再打開http://localhost:8091就能自動(dòng)CouchServer 的webconsole安裝頁面了。
(界面圖)
3.編寫例子進(jìn)行測(cè)試
用eclipse或其它IDE新建Project,導(dǎo)入之前下載的Couchbase-Java-Client-1.1.9.zip中的所有jar包。
新建寫入測(cè)試類:
- import java.io.IOException;
- import java.net.URI;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.concurrent.ExecutionException;
- import java.util.concurrent.TimeUnit;
- import net.spy.memcached.internal.OperationFuture;
- import com.couchbase.client.CouchbaseClient;
- public class Main {
- //文檔key
- public static final String KEY = "testkey1";
- // expiration time of the document (use 0 to persist forever)
- //過期時(shí)間(單位毫秒 0 ***)
- public static final int EXP_TIME = 0;
- //文檔值
- public static final String VALUE =
- "{\"myname\":\"EugeneQiu\","
- + "\"updated\":\"2013-08-23 13:47:00\","
- + "\"description\":\"Just a simple test\","
- + "\"myblog\":\"http://my.oschina.net/EugeneQiu\"}";
- public static void main(String args[]) {
- List<URI> uris = new LinkedList<URI>();
- //服務(wù)器地址(可在Couchbase后臺(tái)Server NODES中查看)
- uris.add(URI.create("http://127.0.0.1:8091/pools"));
- CouchbaseClient client = null;
- try {
- //在Couchbase后臺(tái)的Data Buckets中查看
- client = new CouchbaseClient(uris, "default", "");
- } catch (IOException e) {
- System.err.println("IOException connecting to Couchbase: " + e.getMessage());
- System.exit(1);
- }
- OperationFuture<Boolean> setOp = client.set(KEY, EXP_TIME, VALUE);
- //檢查是否設(shè)置成功
- try {
- if (setOp.get().booleanValue()) {
- System.out.println("Set Succeeded");
- } else {
- System.err.println("Set failed: " + setOp.getStatus().getMessage());
- }
- } catch (InterruptedException e) {
- System.err.println("InterruptedException while doing set: " + e.getMessage());
- } catch (ExecutionException e) {
- System.err.println("ExecutionException while doing set: " + e.getMessage());
- }
- System.out.println();
- //完成操作后3秒后關(guān)閉client
- client.shutdown(3, TimeUnit.SECONDS);
- System.exit(0);
- }
- }
運(yùn)行后看到Set Succeeded字樣表示設(shè)置成功。
編寫測(cè)試類進(jìn)行讀?。?/p>
- import java.io.IOException;
- import java.net.URI;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.concurrent.TimeUnit;
- import com.couchbase.client.CouchbaseClient;
- public class Client
- {
- public static void main(String[] args)
- {
- List<URI> uris = new LinkedList<URI>();
- uris.add(URI.create("http://127.0.0.1:8091/pools"));
- CouchbaseClient client = null;
- try {
- client = new CouchbaseClient(uris, "default", "");
- } catch (IOException e) {
- System.err.println("IOException connecting to Couchbase: " + e.getMessage());
- System.exit(1);
- }
- Object o = client.get("testkey1");
- System.out.println(o);
- client.shutdown(3, TimeUnit.SECONDS);
- System.exit(0);
- }
- }
由于寫入例子中設(shè)置的時(shí)間是***,所以這里正確的輸出應(yīng)該是:
我們還能在Couchbase webconsole后臺(tái)的Data buckets中查看到我們剛才設(shè)置的key.(圖有組件布局錯(cuò)亂是我強(qiáng)制縮小網(wǎng)頁的兼容問題)
至此,已經(jīng)完成一個(gè)簡(jiǎn)單的搭建以及測(cè)試。