couchbase使用

在 Linux CentOS 上安装 Couchbase Server

Couchbase 是一个开源的、分布式的、面向文档(document-oriented)的 NoSQL 数据库,并且内置了 Memcached 服务。本文分享的是自己在 Linux 上成功安装 Couchbase Server 的实际操作步骤和使用方法

1.用 rpm 命令进行安装 Couchbase

rpm --install couchbase-server-enterprise-3.0.1-centos6.x86_64.rpm

安装成功!显示下面的信息:

Starting couchbase-server[  OK  ]

You have successfully installed Couchbase Server.
Please browse to http://cache:8091/ to configure your server.
Please refer to http://couchbase.com for additional resources.

然后通过浏览器访问 http://ip:8091 进行相关配置。

安装Couchbase的文件夹要进行这样的授权设置:chown -R couchbase:couchbase .

2.使用java代码使用couchbase


CouchbaseManager.java


import java.util.Arrays;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Properties;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import com.couchbase.client.java.Bucket;
import com.couchbase.client.java.Cluster;
import com.couchbase.client.java.CouchbaseCluster;
import com.couchbase.client.java.PersistTo;
import com.couchbase.client.java.document.JsonDocument;




public class CouchbaseManager {
private static Logger logger =  LoggerFactory.getLogger(CouchbaseManager.class);
private static final CouchbaseManager couchbaseManager = new CouchbaseManager();
private static Properties server = new Properties();
static{
try {
server.load(CouchbaseManager.class.getClassLoader().getResourceAsStream("couchbase.properties"));
} catch (Exception e) {
logger.error("获取资源文件异常",e);
}
}
 public static CouchbaseManager getInstance() {
  return couchbaseManager;
 }
 public static String getBucket(){
return server.getProperty("Bucket");
 }
 
 public static List<String> getNodeList(){
 List<String> nodeList = Arrays.asList(server.getProperty("NodeList").split(","));
 return nodeList;
 }
 static Cluster cluster = CouchbaseCluster.create(getNodeList());
 static Bucket bucket = cluster.openBucket(getBucket());


 public static void disconnect() {
  cluster.disconnect();
 }
 
public static JsonDocument getItem(String id) {
JsonDocument response = null;
try {
response = bucket.get(id);
} catch (NoSuchElementException e) {
logger.error("ERROR: No element with message: "
+ e.getMessage());
}
return response;
}


public static JsonDocument updateItem(JsonDocument doc) {
return bucket.upsert(doc);
}



public static void deleteItem(String id) {
try {
bucket.remove(id, PersistTo.MASTER);
} catch (NoSuchElementException e){
logger.error("ERROR: No element with message: "
     + e.getMessage());
}
}
}

couchbase.properties配置文件

Bucket=nml

NodeList=192.168.2.10,192.168.2.11


CouchbaseUtils.java

import com.couchbase.client.java.document.JsonDocument;
import com.couchbase.client.java.document.json.JsonObject;


public class CouchbaseUtils {

public void addCache(String id,String key, Object value) {
JsonDocument loaded = CouchbaseManager.getItem(id);
if(loaded != null){
loaded.content().put(key, value);
CouchbaseManager.bucket.replace(loaded);
}else{
JsonObject content = JsonObject.empty().put(key, value);
JsonDocument doc = JsonDocument.create(id,content);
CouchbaseManager.updateItem(doc);
}
}


public JsonObject getCache(String id) {
JsonDocument loaded = CouchbaseManager.getItem(id);
JsonObject obj = null;
if(loaded != null){
obj = loaded.content();
}
return obj;
}


public void removeCache(String id) {
CouchbaseManager.deleteItem(id);
}
public void disconnection(){
CouchbaseManager.disconnect();
}
}


3.counchbase是在一个bucket里面存储很多个document,每个document都有唯一的id,每个id对应一个content,content里面是json格式的键值对

4.query查询需要安装n1ql(couchbase-query_dev_preview3_x86_64_linux.tar.gz)

运行./cbq-engine -couchbase http://[server_name]:8091/

CREATE PRIMARY INDEX ON [bucket-name]

查询代码

public void couchbaseTest5(){
 List<String> nodeList = new ArrayList<String>();
 nodeList.add("192.168.2.10");
 nodeList.add("192.168.2.11");
Cluster cluster = CouchbaseCluster.create( DefaultCouchbaseEnvironment.builder()
   .queryEnabled(true)
   .build(),nodeList);
Bucket bucket = cluster.openBucket("nml");
QueryResult query =  bucket.query("SELECT META().id AS id FROM nml");
List<QueryRow> list = query.allRows();
System.out.println(list.size());
for(QueryRow q : list){
try {
bucket.remove(q.value().get("id").toString(), PersistTo.MASTER);
} catch (Exception e){
e.printStackTrace();
}
}
bucket.close();
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值