功能和memcached一樣;但具有持久化緩存:據說是目前最棒的緩存服務
和大家分享下自己的經驗
軟件下載
http://1978th.net/tokyocabinet/
http://1978th.net/tokyocabinet/tokyocabinet-1.4.45.tar.gz
http://1978th.net/tokyotyrant/
http://1978th.net/tokyotyrant/tokyotyrant-1.1.40.tar.gz
如果用到 --enable-lua則要先安裝lua-5.1.4.tar.gz源碼包:
http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar xzvf tokyocabinet-1.4.45.tar.gz
cd tokyocabinet-1.4.45
./configure --prefix=/usr/local/tc && make && make install
64位操作系統編譯方法:
./configure --prefix=/usr/local/tc --enable-lib64 --libdir=/usr/lib64 && make && make install
tar xzvf lua-5.1.4.tar.gz
cd lua-5.1.4
make linux
make install
tar xzvf tokyotyrant-1.1.40.tar.gz
cd tokyotyrant-1.1.40
./configure --prefix=/usr/local/ttserver --with-tc=/usr/local/tc --enable-lua && make && make install
64位操作系統編譯方法
./configure --prefix=/usr/local/ttserver --with-tc=/usr/local/tc --enable-lib64 --libdir=/usr/lib64 --enable-lua && make && make install
啓動方法:
cd /usr/local/ttserver/bin
默認啓動:
./ttserver &
[1] 19342
[root@feed bin]# 2010-07-22T11:50:28+08:00 SYSTEM --------- logging started [19342] --------
2010-07-22T11:50:28+08:00 SYSTEM server configuration: host=(any) port=1978
2010-07-22T11:50:28+08:00 SYSTEM maximum connection: 1048575
2010-07-22T11:50:28+08:00 SYSTEM opening the database: *
2010-07-22T11:50:28+08:00 SYSTEM service started: 19342
2010-07-22T11:50:28+08:00 INFO timer thread 1 started
2010-07-22T11:50:28+08:00 INFO worker thread 1 started
2010-07-22T11:50:28+08:00 INFO worker thread 2 started
2010-07-22T11:50:28+08:00 INFO worker thread 3 started
2010-07-22T11:50:28+08:00 INFO worker thread 4 started
2010-07-22T11:50:28+08:00 INFO worker thread 5 started
2010-07-22T11:50:28+08:00 INFO worker thread 6 started
2010-07-22T11:50:28+08:00 INFO worker thread 7 started
2010-07-22T11:50:28+08:00 INFO worker thread 8 started
2010-07-22T11:50:28+08:00 SYSTEM listening started
可以看到默認端口是 1978
單機模式啓動:
ulimit -SHn 65536
mkdir -p /ttserver/
cd /usr/local/ttserver/bin
./ttserver -host 127.0.0.1 -port 22122 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/database.tch
雙機互爲主輔模式
主服務器10.8.17.167:
ulimit -SHn 65536
ttserver -host 10.8.17.167 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 91 -mhost 10.8.18.204 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tch
輔服務器10.8.18.204:
ulimit -SHn 65536
ttserver -host 10.8.18.204 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 92 -mhost 10.8.17.167 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tch
參數說明
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] [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 : 指定用來存放同步時間戳的文件名。
停止tokyotyrant(ttserver)
ps -ef | grep ttserver
找到ttserver的進程號並kill,例如:
kill -9 `cat ttserver.pid`
測試--演示非持久性
主:10.8.17.168
輔:10.8.18.204
啓動服務:
主:
cd /usr/local/ttserver/bin/
./ttserver &
使用客戶端(10.8.18.204)--另起一個終端
cd /usr/local/ttserver/bin
存放: ./tcrmgr put 10.8.17.167:1978 one test99
獲取: ./tcrmgr get 10.8.17.167:1978 one
得到結果 test99
測試持久
主的重啓ttserver,
輔的:再次獲取./tcrmgr get 10.8.17.167:1978 one
沒有結果:./tcrmgr: error: 7: no record found
測試--演示持久性
啓動服務=====
主:
cd /usr/local/ttserver/bin/
./ttserver /tmp/x.tch
使用客戶端(10.8.18.204)--另起一個終端
cd /usr/local/ttserver/bin
存放: ./tcrmgr put 10.8.17.167:1978 one test8888888
獲取: ./tcrmgr get 10.8.17.167:1978 one
得到結果:test8888888
測試持久
重啓主:ttserver
再次獲取:
./tcrmgr get 10.8.17.167:1978 one
得到結果:test8888888
證明了持久化的存儲
[root@web_test bin]# telnet 10.8.17.167 1978
Trying 10.8.17.167...
2010-07-22T17:42:34+08:00 INFO connected: 10.8.17.167:51610
Connected to localhost.localdomain (10.8.17.167).
Escape character is '^]'.
stats
STAT pid 1236
STAT uptime 254
STAT time 1279791756
STAT version 1.1.40
STAT pointer_size 64
STAT rusage_user 0.000999
STAT rusage_system 0.001999
STAT cmd_set 0
STAT cmd_set_hits 0
STAT cmd_set_misses 0
STAT cmd_delete 0
STAT cmd_delete_hits 0
STAT cmd_delete_misses 0
STAT cmd_get 1
STAT cmd_get_hits 1
STAT cmd_get_misses 0
STAT cmd_flush 0
STAT curr_items 1
STAT total_items 1
STAT bytes 528736
STAT threads 8
END
quit