在 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
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.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();
}