Couchbase之環境搭建 與 基於Java的測試

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.(圖有組件佈局錯亂是我強制縮小網頁的兼容問題)



至此,已經完成一個簡單的搭建以及測試。

相關文章
相關標籤/搜索