ssdb使用筆記


  ssdb是一款類似於redis的nosql數據庫,不過redis是基於內存的,服務器比較昂貴,ssdb則是基於硬盤存儲的,很容易擴展,對於一些對速度要求不是太高的應用,還是不錯的選擇。

  先記錄一個比較坑的東西,具體的用法以后補充。

  ssdb刪除數據的時候有很多中方法:

    flushdb   刪除整個數據庫中的所有數據

    qclear     刪除列表類型的數據

    hclear     刪除hash類型的數據

    zclear     刪除有序集合類型的梳理

    del          刪除字符串類型的數據

  不過,ssdb在刪除數據的時候並不會立刻釋放磁盤的空間,用作者的話說就是ssdb會在合適的時候去釋放,這就會造成不知不覺中ssdb占用的磁盤空間越來越大,還不知道什么時候才會被釋放,如果不及時處理的話,服務器卡死是很正常的事情,經過不斷的尋找,終於被我發現了一個命令 compact , 這個命令會自動去釋放應該被釋放的磁盤空間,不過在使用的時候會造成ssdb卡慢,並且 compact 命令的執行速度也不快,但總算是可以立刻釋放了,不用再擔心服務器被撐爆。

  需要注意的是如果服務器已經快被撐爆了,那么你在執行 compact 的時候ssdb是有可能崩潰的,而且執行一次 compact 並不會釋放所有應該釋放的空間,可能需要多次執行才行

  還有一個比較坑的東西就是在刪除數據的時候,會造成服務阻塞,其他任何寫命令都執行不了,可讀不可寫。。。而且刪除的超級慢。。。

  下面簡單介紹一下ssdb的用法。

  一、服務器搭建

    環境為Mac

    首先到 https://github.com/ideawu/ssdb 查看官方文檔,下載安裝包

       wget https://github.com/ideawu/ssdb/archive/master.zip
       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之間的鍵,若為''、'' 則不限制范圍,最后一個參數用來限制返回的鍵的最大個數,為必需參數。

 

  可以轉載,但請注明出處,做人要厚道一點,謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM