Couchbase Server (前身是 Membase) 是一個分佈式的面向文檔的 NoSQL 數據庫管理系統,該系統聯合了 CouchDB 的簡單和可靠以及 Memcached 的高性能。 java
網上有MongoDB與Couchbase的對比,請參考: web
http://www.infoworld.com/d/data-management/nosql-showdown-mongodb-vs-couchbase-214912 sql
Couchbase主頁:http://www.couchbase.com/ mongodb
本文的目標是搭建簡單的Couchbase環境並用Java語言進行讀寫測試。 數據庫
1.準備工做 服務器
1)下載 Couchbase Server ,本文用到的版本是version 2.1.1 for win64 ,2.0在某些機器上裝不上,內核問題。 eclipse
2)下載 Java相關類庫 nosql
相關下載連接:http://www.couchbase.com/download
分佈式
2.安裝Couchbase Server memcached
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.(圖有組件佈局錯亂是我強制縮小網頁的兼容問題)
至此,已經完成一個簡單的搭建以及測試。