【转载】ssdb安装部署
轉(zhuǎn)載地址:https://www.cnblogs.com/dyfblog/p/5894518.html
ssdb是一款類似于redis的nosql數(shù)據(jù)庫(kù),不過(guò)redis是基于內(nèi)存的,服務(wù)器比較昂貴,ssdb則是基于硬盤(pán)存儲(chǔ)的,很容易擴(kuò)展,對(duì)于一些對(duì)速度要求不是太高的應(yīng)用,還是不錯(cuò)的選擇。
先記錄一個(gè)比較坑的東西,具體的用法以后補(bǔ)充。
ssdb刪除數(shù)據(jù)的時(shí)候有很多中方法:
flushdb 刪除整個(gè)數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)
qclear 刪除列表類型的數(shù)據(jù)
hclear 刪除hash類型的數(shù)據(jù)
zclear 刪除有序集合類型的梳理
del 刪除字符串類型的數(shù)據(jù)
不過(guò),ssdb在刪除數(shù)據(jù)的時(shí)候并不會(huì)立刻釋放磁盤(pán)的空間,用作者的話說(shuō)就是ssdb會(huì)在合適的時(shí)候去釋放,這就會(huì)造成不知不覺(jué)中ssdb占用的磁盤(pán)空間越來(lái)越大,還不知道什么時(shí)候才會(huì)被釋放,如果不及時(shí)處理的話,服務(wù)器卡死是很正常的事情,經(jīng)過(guò)不斷的尋找,終于被我發(fā)現(xiàn)了一個(gè)命令 compact , 這個(gè)命令會(huì)自動(dòng)去釋放應(yīng)該被釋放的磁盤(pán)空間,不過(guò)在使用的時(shí)候會(huì)造成ssdb卡慢,并且 compact 命令的執(zhí)行速度也不快,但總算是可以立刻釋放了,不用再擔(dān)心服務(wù)器被撐爆。
需要注意的是如果服務(wù)器已經(jīng)快被撐爆了,那么你在執(zhí)行 compact 的時(shí)候ssdb是有可能崩潰的,而且執(zhí)行一次 compact 并不會(huì)釋放所有應(yīng)該釋放的空間,可能需要多次執(zhí)行才行。
還有一個(gè)比較坑的東西就是在刪除數(shù)據(jù)的時(shí)候,會(huì)造成服務(wù)阻塞,其他任何寫(xiě)命令都執(zhí)行不了,可讀不可寫(xiě)。。。而且刪除的超級(jí)慢。。。
下面簡(jiǎn)單介紹一下ssdb的用法。
一、服務(wù)器搭建
環(huán)境為Mac
首先到 https://github.com/ideawu/ssdb 查看官方文檔,下載安裝包
1
2
3
4
wget https://github.com/ideawu/ssdb/archive/master.zip
unzip master.zip
cd ssdb-master
make
make的時(shí)候報(bào)了個(gè)錯(cuò):ERROR! autoconf required! install autoconf first
于是安裝 autoconf
1
brew install autoconf
安裝完成后繼續(xù)編譯
1
make && make install
沒(méi)有報(bào)錯(cuò),繼續(xù),下面啟動(dòng)ssdb服務(wù),加-d參數(shù)為deamon模式 服務(wù)后臺(tái)運(yùn)行 推薦使用
1
./ssdb-server -d ./ssdb.conf
或者
1
./ssdb-server ./ssdb.conf
然后可以使用下面的命令連接到ssdb數(shù)據(jù)庫(kù),進(jìn)行操作
1
./tools/ssdb-cli -h localhost -p 8888
使用在命令行客戶端中執(zhí)行info命令結(jié)果如下:
關(guān)閉數(shù)據(jù)庫(kù)
1
./ssdb-server ./ssdb.conf -s stop
PS: ssdb服務(wù)在啟動(dòng)的時(shí)候會(huì)在 var 目錄下生成一個(gè)ssdb.pid文件,當(dāng)ssdb由于意外關(guān)閉的時(shí)候這個(gè)文件不會(huì)被刪除,因此當(dāng)重新啟動(dòng)ssdb服務(wù)的時(shí)候,會(huì)報(bào)下面的錯(cuò)誤:
Fatal error!
Pidfile ./var/ssdb.pid already exists!
Kill the running process before you run this command,
or use ‘-s restart’ option to restart the server.
此時(shí)你可以手動(dòng)刪除var/ssdb.pid文件,然后啟動(dòng)ssdb服務(wù),或者在啟動(dòng)ssdb服務(wù)的時(shí)候使用如下命令
1
./ssdb-server -d ./ssdb.conf -s restart
-s 參數(shù)支持三個(gè)選項(xiàng) stop, start , restart, 默認(rèn)情況下可不加 -s 參數(shù),此時(shí)默認(rèn)為start選項(xiàng)
!!! PS 當(dāng)ssdb由于某個(gè)特別耗時(shí)操作卡死的時(shí)候,如果想停止命令的執(zhí)行,目前我只知道重啟這個(gè)辦法。但是ssdb重啟使用 restart 特別慢,所以可以使用kill -9 殺掉進(jìn)程,然后再啟動(dòng)。。 不知道會(huì)有啥不良影響,我試了一次,還沒(méi)發(fā)現(xiàn)問(wèn)題。
二、數(shù)據(jù)庫(kù)操作
ssdb中的數(shù)據(jù)類型分為4中,字符串類型、列表類型、哈希類型、有序集合類型。
這四種數(shù)據(jù)類型的操作命令一般都以固定的字母開(kāi)頭:
s 字符串類型
q 列表類型
h 哈希類型
z 有序集合類型
(1)首先,我們最關(guān)心的一般是數(shù)據(jù)庫(kù)中存在著哪些鍵,在redis中,使用keys命令可以查看當(dāng)前數(shù)據(jù)庫(kù)中的所有鍵,但ssdb中卻沒(méi)有這樣功能的命令,這可能會(huì)讓讓用慣了redis的同學(xué)感覺(jué)有點(diǎn)別扭。
在ssdb中查看存在的鍵是分類型用不同的命令的:
keys 字符串類型
qlist 列表類型
hlist 哈希類型
zlist 有序集合類型
這四個(gè)命令的參數(shù)和用法都一樣,例如
前兩個(gè)參數(shù)用于確定鍵的范圍,a、z 即篩選鍵名首字母在a-z之間的鍵,若為’’、’’ 則不限制范圍,最后一個(gè)參數(shù)用來(lái)限制返回的鍵的最大個(gè)數(shù),為必需參數(shù)。
總結(jié)
以上是生活随笔為你收集整理的【转载】ssdb安装部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JSON.stringify() 方法
- 下一篇: elasticsearch亿级数据量全量