1、 参考资料链接


利用Tokyo Tyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统[原创]》:[http://blog.s135.com/post/362/]

MemcacheDB, Tokyo Tyrant, Redis performance test: [http://timyang.net/data/mcdb-tt-redis/]

robbin,为什么要用非关系数据库;[http://robbin.javaeye.com/blog/524977]

2、概念

tokyocabinet :一个key-value的DBM数据库,但是没有提供网络接口,以下称TC。

tokyotyrant :是为TC写的网络接口,他支持memcache协议,也可以通过HTTP操作,以下称TT。

3、特点

Tokyo Tyrant支持双机互为主辅模式,主辅库均可读写,而Memcachedb目前支持类似MySQL主辅库同步的方式实现读写分离,支持“主服务器可读写、辅助服务器只读”模式。

4、安装

双机互为主辅模式 

服务器192.168.1.91:


ulimit -SHn 51200

ttserver -host 192.168.1.91 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 91 -mhost 192.168.1.92 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tch


服务器192.168.1.92:


ulimit -SHn 51200

ttserver -host 192.168.1.92 -port 11211 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 92 -mhost 192.168.1.91 -mport 11211 -rts /ttserver/ttserver.rts /ttserver/database.tch


参数说明 

ttserver -host -port -thnum -tout [-dmn] -pid -log [-ld|-le] -ulog -ulim [-uas] -sid -mhost -mport -rts [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 : 指定用来存放同步时间戳的文件名。   

如果使用的是哈希数据库,可以指定参数“#bnum=xxx”来提高性能。它可以指定bucket存储桶的数量。例如指定“#bnum=1000000”,就可以将最新最热的100万条记录缓存在内存中:

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#bnum=1000000

如果大量的客户端访问ttserver,请确保文件描述符够用。许多服务器的默认文件描述符为1024,可以在启动ttserver前使用ulimit命令提高这项值。例如:

ulimit -SHn 51200

5、调用

任何Memcached客户端均可直接调用tokyotyrant。

还可以通过HTTP方式调用,下面以Linux的curl命令为例,介绍如何操作tokyotyrant;

写数据:将数据“value”写入到“key”中:

curl -X PUT http://127.0.0.1:11211/key -d "value"

读数据,读取“key”中数据:

curl http://127.0.0.1:11211/key

删数据,删除“key”:

curl -X DELETE http://127.0.0.1:11211/key