Tokyo Tyrant 是由同一作者開發的 Tokyo Cabinet 資料庫網路接口。它擁有Memcached兼容協定,也可以通過HTTP協定進行數據交換。Tokyo Tyrant 加上 Tokyo Cabinet,構成了一款支持高並發的分散式持久存儲系統,對任何原有Memcached客戶端來講,可以將Tokyo Tyrant看成是一個Memcached,但是,它的數據是可以持久存儲的。ttserve安裝
下載zlib和bZIP並進行安裝,因為我使用的是ubuntu系統,所以直接apt-get install libbz2-dev就 ok了。
安裝tokyo cabinet
下載 tokyocabinet-1.4.41.tar.gz
tar zxvf tokyocabinet-1.4.41.tar.gz
cd tokyocabinet-1.4.41/
64位系統安裝方法
./configure
make
make install
32位系統安裝方法
./configure --enable-off64 #啟動64位偏移,因為本機是32位,如果不加此參數,資料庫檔案超過2G就會崩潰
make
make install
因為我的機器是32位,所以選擇第二種方法
安裝tokyo tyrant
tar zxvf TokyoTyrant-1.1.40.tar.gz
cd tokyotyrant-1.1.40
./configure
make
make install
創建tokyo tyrant數據檔案存放的目錄
mkdir -p /ser/ttserver
ttserver相關參數
ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pid path] [-log path] [-ld|-le] [-ulog path] [-ulim num] [-UAS] [-sid num] [-mhost name] [-mport num] [-rts path] [-ext path] [-mask expr] [-unmask expr] [dbname]
-host name : 指定需要綁定的伺服器域名或IP位址。默認綁定這台伺服器上的所有IP位址。
-port num : 指定需要綁定的連線埠號。默認連線埠號為1978
-thnum num : 指定執行緒數。默認為8個執行緒。
-tout num : 指定每個會話的逾時時間(單位為秒)。默認永不逾時。
-dmn : 以守護進程方式運行。
-pid path : 輸出進程ID到指定檔案(這裡指定檔案名稱)。
-log path : 輸出日誌信息到指定檔案(這裡指定檔案名稱)。
-ld : 在日誌檔案中還記錄DEBUG調試信息。
-le : 在日誌檔案中僅記錄錯誤信息。
-ulog path : 指定同步日誌檔案存放路徑(這裡指定目錄名)。
-ulim num : 指定每個同步日誌檔案的大小(例如128m)。
-uas : 使用異步IO記錄更新日誌(使用此項會減少磁碟IO消耗,但是數據會先放在記憶體中,不會立即寫入磁碟,如果重啟伺服器或ttserver進程被kill掉,將導致部分數據丟失。一般情況下不建議使用)。
-sid num : 指定伺服器ID號(當使用主輔模式時,每台ttserver需要不同的ID號)
-mhost name : 指定主輔同步模式下,主伺服器的域名或IP位址。
-mport num : 指定主輔同步模式下,主伺服器的連線埠號。
-rts path : 指定用來存放同步時間戳的檔案名稱。
-ext path : 擴展的腳本檔案
-mask expr : 需要禁止的命令,多個命名用","隔開
-unmaks expr : 允許的命令
單機模式啟動
ttserver -host 127.0.0.1 -port 11211 -thnum 8 -dmn -pid /ser/ttserver/ttserver.pid -log /ser/ttserver/ttserver.log -le -ulog /ser/ttserver/ -ulim 128m -sid 1 -rts /ser/ttserver.rts /ser/ttserver/database.tch
啟動的時候,根據參數database名來確定使用的TC資料庫類型。如果為"*",則使用記憶體hash表,如果為"+",則使用記憶體B+庫,如果後綴為".tch",則使用hash表,如果後綴為".tcb",則使用B+樹資料庫,如果後綴為".tcf",則使用定長數組。如果dbname參數被省略,則採用記憶體hash資料庫。
如果使用的是哈希資料庫,可以指定參數“#bnum=xxx”來提高性能。它可以指定bucket存儲桶的數量。例如指定“#bnum=1000000”,就可以將最新最熱的100萬條記錄快取在記憶體中。
ttserver -host 127.0.0.1 -port 11211 -thnum 8 -dmn -pid /ser/ttserver/ttserver.pid -log /ser/ttserver/ttserver.log -le -ulog /ser/ttserver/ -ulim 128m -sid 1 -rts /ser/ttserver.rts /ser/ttserver/database.tch#bnum=1000000
如果大量的客戶端訪問ttserver,請確保檔案描述符夠用。許多伺服器的默認檔案描述符為1024,可以在啟動ttserver前使用ulimit命令提高這項值。例如:ulimit -SHn 51200
關閉服務
cat /ser/ttserver/ttserver.pid或者ps -ef|GREP ttserver
kill -TERM 10095
調用
寫入
curl -X PUT http://127.0.0.1:11211/key -d "ttserver"
讀取
curl http://127.0.0.1:11211/key
刪除
curl -X DELETE http://127.0.0.1:11211/key
測試寫入和讀取1000條數據
starttime=`date "+%s"`;for((i=1;i<1001;i++)); do curl http://127.0.0.1:11211/key_$i; done;endtime=`date "+%s"`;echo $(($endtime-$starttime));