常用命令:
apt-get install tokyotyrant
apt-get install python-tokyotyrant
watch -n 1 "tcrmgr inform -port 11211 -st 10.1.224.171"
备份tcrmgr copy -port 11212 10.1.224.171 /data/backdata/yiyiback0607.tch
tcrmgr vanish -port 11211 10.1.224.171 清除
tcrmgr put -port 11211 10.1.224.171 hao aifangfang
tcrmgr list -port 11211 10.1.224.171
tcrmgr out -port 11211 10.1.224.171 hao
ps -ef|grep ttserver
ulimit -SHn 512000
tcrtest write -port 11212 -cnum 768 10.1.224.171 99999999
lsof -c tcrtest|wc -l
ttserver -host 10.1.224.171 -port 11212 -thnum 1024 -dmn -pid /data/ttserver_cache/ttserver.pid -log /data/ttserver_cache/ttserver.log -le -ulog /data/ttserver_cache/ulog/ -ulim 128m -sid 171_2 -rts /data/ttserver_cache/ttserver.rts /data/ttserver_cache/cache.tcb#lmemb=1024#nmemb=2048#bnum=20000000
指南参考http://code.google.com/p/xmemcached/wiki/User_Guide_zh
监控命令
tcrmgr inform -port 11211 -st 10.1.224.171
装完后,重启ubuntu会自动启动线程。ps查看
/usr/sbin/ttserver -port 0 -dmn -pid /var/run/tokyotyrant/tokyotyrant.pid -log /var/log/tokyotyrant/tokyotyrant.log -host /var/run/tokyotyrant/tokyotyrant.sock /var/lib/tokyotyrant/data/tokyotyrant.tch#bnum=1000000
参考http://gqf2008.iteye.com/blog/366963
http://www.162cm.com/p/tokyotyrant.html
在ubuntu11.04下
apt-get install libbz2-dev
apt-get install tokyotyrant
mkdir /ttservcer
ttserver -host 127.0.0.1 -port 11211 -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
ps -ef|grep ttserver
kill -TERM 3683
启动之后:
curl -X PUT http://127.0.0.1:11211/hao -d "ningge"
添加值
curl http://127.0.0.1:11211/hao 访问值
curl -X DELETE http://127.0.0.1:11211/hao 删除值
或用:
tcrmgr put -port 20000 192.168.0.100 test1 value1 增加
tcrmgr get -port 20000 192.168.0.100 test1 获取
tcrmgr out -port 20000 192.168.0.100 test1 删除
tcrmgr list -port 20000 192.168.0.100 列出所有数据的key
参考http://blog.csdn.net/leonzhang2008/archive/2010/11/23/6029635.aspx
摘抄:
-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 : 指定用来存放同步时间戳的文件名。
------------------------java--------------------
http://code.google.com/p/tokyotyrant-java/downloads/list
这个没试验,下面这个好使,据说是memcache的协议
http://code.google.com/p/xmemcached/
XMemcachedClient client =new XMemcachedClient(AddrUtil.getAddresses("10.1.224.171:11211"));
if (!client.set("hello", 0, "okok")){ //对应cnt_put
System.err.println("set error");
}
client.add("hello", 0, "okok1"); //对应cnt_putkeep
client.replace("hello", 0, "okok2");
String name=(String)client.get("hello");
System.out.println(name);
List<String> keys=new ArrayList<String>();
keys.add("hello");
keys.add("hao");
Map<String,Object> map=client.get(keys);
System.out.println(map.get("hao"));
client.shutdown();
或者:
MemcachedClientBuilder builder = new XMemcachedClientBuilder(
AddrUtil.getAddresses("10.1.224.171:11211"));
MemcachedClient memcachedClient = builder.build();
try {
memcachedClient.set("hello", 0, "Hello,xmemcached");
String value = memcachedClient.get("hello");
System.out.println("hello=" + value);
memcachedClient.delete("hello");
value = memcachedClient.get("hello");
System.out.println("hello=" + value);
} catch (MemcachedException e) {
System.err.println("MemcachedClient operation fail");
e.printStackTrace();
} catch (TimeoutException e) {
System.err.println("MemcachedClient operation timeout");
e.printStackTrace();
} catch (InterruptedException e) {
// ignore
}
try {
// close memcached client
memcachedClient.shutdown();
} catch (IOException e) {
System.err.println("Shutdown MemcachedClient fail");
e.printStackTrace();
}
-------------------------------------------
Tokyo Cabinet 单个数据库文件记录数超过1亿,性能会急剧下降。Tokyo Tyrant 的新版本支持了数据库文件拆分,例如 ttserver -mul 256 database.tcb 启动TT时,将会自动拆分成256个文件,存取时,根据key哈希到不同的文件。
-----------------------------详解---------------------
[@ubuntu_106_182 ~]# tcrmgr inform -port 11212 -st 192.168.106.182
version 1.1.40
libver 323
protver 0.91
os Linux
time 1306904089.978848
pid 14085
sid 182
type B+ tree
path /data/ttserver_cache/cache.tcb
rnum 8312540 当前键值的数量
size 19317456896
bigend 0
fd 313
loadavg 1.530000
memsize 5984587776
memrss 256909312
ru_user 132652.434764
ru_sys 73513.136304
ru_real 3717761.706554
cnt_put 196309068 put操作的次数,put同一个key也算
cnt_putkeep 0
cnt_putcat 0
cnt_putshl 0
cnt_putnr 0
cnt_out 2030428 out操作的次数
cnt_get 4483735690 读取key的次数
cnt_mget 0
cnt_vsiz 0
cnt_iterinit 1
cnt_iternext 3544
cnt_fwmkeys 0
cnt_addint 0
cnt_adddouble 0
cnt_ext 0
cnt_sync 0
cnt_optimize 0
cnt_vanish 0
cnt_copy 0
cnt_restore 0
cnt_setmst 0
cnt_rnum 0
cnt_size 0
cnt_stat 207543170
cnt_misc 0
cnt_repl 0
cnt_put_miss 0
cnt_out_miss 2012252
cnt_get_miss 159781902 读取,但是key不存在的次数