Couchbase之環境搭建與基于Java的測試
Couchbase Server (前身是 Membase) 是一個分布式的面向文檔的 NoSQL 數據庫管理系統,該系統聯合了 CouchDB 的簡單和可靠以及 Memcached 的高性能。
網上有MongoDB與Couchbase的對比,請參考:
http://www.infoworld.com/d/data-management/nosql-showdown-mongodb-vs-couchbase-214912
Couchbase主頁:http://www.couchbase.com/
本文的目標是搭建簡單的Couchbase環境并用Java語言進行讀寫測試。
1.準備工作
1)下載 Couchbase Server ,本文用到的版本是version 2.1.1 for win64 ,2.0在某些機器上裝不上,內核問題。
2)下載 Java相關類庫
相關下載鏈接:http://www.couchbase.com/download
2.安裝Couchbase Server
1)安裝過程很簡單,在官網下載并安裝即可。
2)安裝完成后Couchbase Console程序會自動打開http://localhost:8091地址,這時候有可能會打不開,最有可能出現的問題就是端口被占用了。(占用與否,可以用cmd查一下)
這時再打開http://localhost:8091就能自動CouchServer 的webconsole安裝頁面了。
(界面圖)
3.編寫例子進行測試
用eclipse或其它IDE新建Project,導入之前下載的Couchbase-Java-Client-1.1.9.zip中的所有jar包。
新建寫入測試類:
- 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)
- //過期時間(單位毫秒 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>();
- //服務器地址(可在Couchbase后臺Server NODES中查看)
- uris.add(URI.create("http://127.0.0.1:8091/pools"));
- CouchbaseClient client = null;
- try {
- //在Couchbase后臺的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);
- //檢查是否設置成功
- 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秒后關閉client
- client.shutdown(3, TimeUnit.SECONDS);
- System.exit(0);
- }
- }
運行后看到Set Succeeded字樣表示設置成功。
編寫測試類進行讀取:
- 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);
- }
- }
由于寫入例子中設置的時間是***,所以這里正確的輸出應該是:
我們還能在Couchbase webconsole后臺的Data buckets中查看到我們剛才設置的key.(圖有組件布局錯亂是我強制縮小網頁的兼容問題)
至此,已經完成一個簡單的搭建以及測試。