ssdb是一款類似於redis的nosql資料庫,不過redis是基於記憶體的,伺服器比較昂貴,ssdb則是基於硬碟儲存的,很容易擴充套件,對於一些對速度要求不是太高的應用,還是不錯的選擇。
先記錄乙個比較坑的東西,具體的用法以後補充。
ssdb刪除資料的時候有很多中方法:
flushdb 刪除整個資料庫中的所有資料
qclear 刪除列表型別的資料
hclear 刪除hash型別的資料
zclear 刪除有序集合型別的梳理
del 刪除字串型別的資料
不過,ssdb在刪除資料的時候並不會立刻釋放磁碟的空間,用作者的話說就是ssdb會在合適的時候去釋放,這就會造成不知不覺中ssdb占用的磁碟空間越來越大,還不知道什麼時候才會被釋放,如果不及時處理的話,伺服器卡死是很正常的事情,經過不斷的尋找,終於被我發現了乙個命令 compact , 這個命令會自動去釋放應該被釋放的磁碟空間,不過在使用的時候會造成ssdb卡慢,並且 compact 命令的執行速度也不快,但總算是可以立刻釋放了,不用再擔心伺服器被撐爆。
需要注意的是如果伺服器已經快被撐爆了,那麼你在執行 compact 的時候ssdb是有可能崩潰的,而且執行一次 compact 並不會釋放所有應該釋放的空間,可能需要多次執行才行。
還有乙個比較坑的東西就是在刪除資料的時候,會造成服務阻塞,其他任何寫命令都執行不了,可讀不可寫。。。而且刪除的超級慢。。。
下面簡單介紹一下ssdb的用法。
一、伺服器搭建
環境為mac
wget
unzip master.zip
cd ssdb-master
make
make的時候報了個錯:error! autoconf required! install autoconf first
於是安裝 autoconf
brew install autoconf
安裝完成後繼續編譯
make && make install
沒有報錯,繼續,下面啟動ssdb服務,加-d引數為deamon模式 服務後台執行 推薦使用
./ssdb-server -d ./ssdb.conf
或者./ssdb-server ./ssdb.conf
然後可以使用下面的命令連線到ssdb資料庫,進行操作
./tools/ssdb-cli -h localhost -p 8888
使用在命令列客戶端中執行info命令結果如下:
關閉資料庫
./ssdb-server ./ssdb.conf -s stop
ps: ssdb服務在啟動的時候會在 var 目錄下生成乙個ssdb.pid檔案,當ssdb由於意外關閉的時候這個檔案不會被刪除,因此當重新啟動ssdb服務的時候,會報下面的錯誤:
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.
此時你可以手動刪除var/ssdb.pid檔案,然後啟動ssdb服務,或者在啟動ssdb服務的時候使用如下命令
./ssdb-server -d ./ssdb.conf -s restart
-s 引數支援三個選項 stop, start , restart, 預設情況下可不加 -s 引數,此時預設為start選項
!!! ps 當ssdb由於某個特別耗時操作卡死的時候,如果想停止命令的執行,目前我只知道重啟這個辦法。但是ssdb重啟使用 restart 特別慢,所以可以使用kill -9 殺掉程序,然後再啟動。。 不知道會有啥不良影響,我試了一次,還沒發現問題。
二、資料庫操作
ssdb中的資料型別分為4中,字串型別、列表型別、雜湊型別、有序集合型別。
這四種資料型別的操作命令一般都以固定的字母開頭:
s 字串型別
q 列表型別
h 雜湊型別
z 有序集合型別
(1)首先,我們最關心的一般是資料庫中存在著哪些鍵,在redis中,使用keys命令可以檢視當前資料庫中的所有鍵,但ssdb中卻沒有這樣功能的命令,這可能會讓讓用慣了redis的同學感覺有點彆扭。
在ssdb中檢視存在的鍵是分型別用不同的命令的:
keys 字串型別
qlist 列表型別
hlist 雜湊型別
zlist 有序集合型別
這四個命令的引數和用法都一樣,例如
前兩個引數用於確定鍵的範圍,a、z 即篩選鍵名首字母在a-z之間的鍵,若為''、'' 則不限制範圍,最後乙個引數用來限制返回的鍵的最大個數,為必需引數。
SSDB 效能測試
配置檔案 leveldb inmb cache size 500 inkb block size 256 inmb write buffer size 256 in mb s compaction speed 1000 yes no compression yes hashmap 100萬條,文字共...
SSDB與Redis的區別
ssdb 是乙個 c 開發的 nosql 資料庫,使用 google 公司開源的 leveldb 引擎作為底層的儲存引擎.redis 是乙個 c 語言開發的記憶體 nosql 資料庫。ssdb 採用 new bsd license 許可協議,乙個非常寬鬆靈活的協議,支援 ssdb 擁有 redis ...
SSDB與Redis的區別
ssdb 擁有 redis 的主要優點 高效能,豐富資料結構,並且擁有 redis 所不具備的能力 大資料儲存能力.ssdb 伺服器的單機儲存能力是 redis 的 100 倍 因為 ssdb 能將資料儲存在硬碟中.在使用 ssdb 自帶的 ssdb bench 工具,以及 redis 自帶的 re...