網上的couchbase資料十分有限,這無疑給我們學習增加了難度。
Couchbase是membase的升級版,membase與memcache是同一家公司出的,Couchbase包含了memcache的功能。
首先要安裝使用,去官網下很不推薦,網速慢,下載頁面也加載不出來,可以下載這個6.x的新版本de
鏈接:https://pan.baidu.com/s/1PpPXHV2V0z1dGDselAz-Pg
提取碼:ngwx
安裝之後,推薦使用web端控制檯,雙擊之後會打開web界面,第一次使用需要註冊用戶,
登入之後,這裏我建了一個集羣,如果英語差,可以使用谷歌瀏覽器翻譯頁面
要使用couchbase首先要知道他是什麼,怎麼使用,他的優點等等。
官方文檔,版本比較低,但對它介紹的很詳細,這裏使用谷歌翻譯了中文頁面
https://docs.couchbase.com/couchbase-manual-2.2/#introduction-to-couchbase-server
當你對它有了一個整體的認識就可以操作了。
剛安裝好是沒有數據的,官方給我們提供了三個桶(數據庫),有示例數據,建議全部添加,我這裏加了啤酒樣品的桶,
點擊文件就可以進入到數據展示頁,是一個key,對應一個json文檔,
找到 query功能,輸入下面的查詢語句,點擊執行,桶的名字要加反引號(看起來是和sql查詢是類似的語法),可以看到查詢結果。
SELECT * FROM `beer-sample`
WHERE brewery_id IS NOT MISSING AND type="beer" LIMIT 5;
自己新建一個桶,在新建一個用戶,切記用戶的名字和桶的名字務必保持一致,
新建用戶
完成後,給用戶賦權,把這個桶的所有權限給到用戶
建好之後,我們先用java的方式連接couchbase
sprintboot+jpa的方式
倉庫地址:https://github.com/caibixyy/couch.git
因爲代碼就一個實體,然後業務類,控制類所有這裏不展示,可以從倉庫clone,看配置
我建了一個桶,beer,建了一個用戶也叫beer(再次提示必須一樣,不然將連接不上這個桶,用戶和桶必須綁定,賦予權限),密碼如下
server:
port: 8085
spring:
couchbase:
bootstrap-hosts: localhost
bucket:
name: beer
password: rootrootrootroot
logging:
level:
root: debug
@GetMapping("/insert")
public Iterable<BeerSimple> findAll(){
for (int i = 21; i < 30; i++) {
BeerSimple b= new BeerSimple("brewery_id"+i,"青島","嶗山真品質",2,"勇闖天涯",i,"big","haha",1,new Date(),7.2);
beerSimpleService.save(b);
}
return null;
}
啓動,訪問,成功插入數據
大功告成。
node.js連接couchbase。
這裏我的node版本是12的新版本,couchbase是6.x的
你要確保node.js的環境完全沒有問題,安裝的時候建議您勾選安裝插件依賴,需要python2.7.17和vasual studio 2017
這是node自動給我裝的插件,此過程較長,建議你等會,再等會
首先鏡像換成淘寶的,在cmd裏
npm install -g cnpm --registry=https://registry.npm.taobao.org
在執行命令
npm install couchbase
如果過程中報錯了,執行一下這個
npm install -g node-gyp
或者
npm config set msvs_version 2017
或者
npm install --global --production windows-build-tools
或者
npm init
看錯誤提示是什麼錯誤
安裝完成後寫js文件
var couchbase = require("couchbase");
var cluster = new couchbase.Cluster('localhost:8091');
var bucket = cluster.openBucket('beer','rootrootrootroot', function(err) {
if (err) {
// Failed to make a connection to the Couchbase cluster.
throw err;
}
// Retrieve a document
bucket.get('brewery_id', function (err, result) {
if (err) {
throw err;
}
var doc = result.value;
console.log(doc.name)
})
})
var couchbase = require("couchbase");
var cluster = new couchbase.Cluster('localhost:8091');
var bucket = cluster.openBucket('beer','rootrootrootroot', function(err) {
if (err) {
// Failed to make a connection to the Couchbase cluster.
throw err;
}
bucket.insert('brewery_id20', {"abv":7.2,"name":"勇闖天涯","description":"嶗山真品質","upc":1,"style":"big","_class":"com.example.demo.entity.BeerSimple","category":"青島","type":"haha","ibu":2,"updated":1573625330410,"srm":19}, function (err, result) {
if (err) {
console.log(err)
} else {
console.log(result)
}
})
})
ok,大功告成了。
2019-12-6補充
由於對此數據庫的片面認知,又學到了一點
//引入
const Couchbase = require("couchbase");;
const cluster = new Couchbase.Cluster("couchbase://localhost");
cluster.authenticate("Administrator", "123456");
const bucket = cluster.openBucket("card-sample");
//調用,封裝成一個方法,或寫一個http請求直接調用都可以
return new Promise((resolve, reject) => {
bucket.get(主鍵, (error, result) => {
if(error) {
return reject(
httpError(error)
);
}
resolve(result);
});
});