`
gcgmh
  • 浏览: 349942 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ttserver介绍

阅读更多
原文出处:http://hi.baidu.com/thinkinginlamp/blog/item/2b6f6709926669c63bc763d1.html

尝试Tokyo Cabinet2009年06月22日 星期一 下午 04:37作者:老王

Tokyo Cabinet是一个高效键值数据库,不过和Redis相比,它没有内建的网络接口支持,所以得额外安装,作者已经写好了,就是Tokyo Tyrant:

分别下载源代码:

wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.4.27.tar.gz
wget http://tokyocabinet.sourceforge.net/tyrantpkg/tokyotyrant-1.1.29.tar.gz

注:tokyocabinet源代码包里的Makefile.in文件内有很多用法演示,强烈推荐看看。

两个软件包的安装都很简单,就是Linux下人人皆知的三板斧:

./configure & make & make install

安装完成后,执行ttserver命令就会启动服务,缺省情况下,没有给任何参数使用的是内存数据库。

网络接口Tokyo Tyrant支持HTTP操作方式,我们新开一个命令行窗口来验证一下:

curl -X PUT http://127.0.0.1:1978/foo -d bar
curl http://127.0.0.1:1978/foo

前面是通过执行ttserver命令的方式来启动服务的,实际上还有更优雅的方式,那就是通过ttservctl脚本。

vi /usr/local/sbin/ttservctl

通过ttservctl脚本启动服务缺省使用的是文件数据库,有四种类型的文件数据库,具体使用的是哪种可以通过ttservctl脚本里的dbname扩展名来判断:

.tch - Hash
.tcb - Btree
.tcf - Fixed-length
.tct - Table

每种文件数据库都分别对应这一个mgr命令行工具,可以通过如下命令来查看:

ls /usr/local/bin/*mgr(同时还有很多测试工具,ls /usr/local/bin/*test)

比如说,tch对应的就是tchmgr,tcb对应的就是tcbmgr,tcf对应的就是tcfmgr,tct对应的就是tctmgr。剩下的tcamgr相当于是一个数据抽象层,各种类型都能操作,而tcrmgr相当于是一个远程数据接口,它们的使用都不难,可以对照man手册自己试试:

tchmgr create db
tchmgr put ./db foo bar
tchmgr get ./db foo

如果使用tcamgr的话,在创建数据库的时候要指明扩展名,以便抽象层能判断出要创建的类型:

tcamgr create db.tch
tcamgr put ./db.tch foo bar
tcamgr get ./db.tch foo

要想测试tcrmgr的话,记得先启动ttservctl再测试:

tcrmgr put localhost foo bar
tcrmgr get localhost foo

相对比较NB的是Table类型数据库的使用,可以模拟保存关系数据库中的表:

tctmgr create articles
tctmgr put articles 1 "title" "foo_1" "content" "bar_1"
tctmgr put articles 2 "title" "foo_2" "content" "bar_2"

第一个操作:

tctmgr list -pv articles

会输出如下内容:

1 title foo_1 content bar_1
2 title foo_2 content bar_2

第二个操作:

tctmgr get articles 1

会输出如下内容:

title foo_1
content bar_1

第三个操作:

tctmgr search -pv articles title STREQ foo_2

会输出如下内容:

2 title foo_2 content bar_2

就好像操作关系数据库一样,STREQ在这里是等于的意思,在man tctmgr里能查到完整的命令列表:

The operator of the 'search' subcommand is one of "STREQ", "STRINC", "STRBW", "STREW", "STRAND", "STROR", "STROREQ", "STRRX", "NUMEQ", "NUMGT", "NUMGE", "NUMLT", "NUMLE", "NUMBT", "NUMOREQ", "FTSPH", "FTSAND", "FTSOR", and "FTSEX". If "~" preposes each operator, the logical meaning is reversed. If "+" preposes each operator, no index is used for the operator. The type of the '-ord' option is one of "STRASC", "STRDESC", "NUMASC", and "NUMDESC". This command returns 0 on success, another on failure.

具体的含义可以在API文档中关于tctdbqryaddcond的部分查到。

同时,网络接口Tokyo Tyrant不仅支持HTTP的操作方式,同时还兼容Memcached协议,这无疑是个很实惠的优点,比如说对于PHP来说,可以使用现成的Memcached扩展,而不用再费力写新的扩展:

$instance = new Memcache();
$instance->connect('127.0.0.1', '1978');
$instance->set('foo', 'bar');
echo $instance->get('foo');

不过这个优点也是有代价的,在使用Memcached方式连接Tokyo Tyrant时,Tokyo Tyrant会忽略flags,exptime,cas unique这几个标志位,其中忽略flags标志位意味着,PHP客户端要自己负责反序列化。同时,在使用Memcached方式连接Tokyo Tyrant时,就不能使用Tokyo Cabinet的高级功能了,这时的Tokyo Cabinet退化成一个彻彻底底的键值数据库。

和Memcached客户端相比,使用专用客户端功能会更丰富一些,PHP的不多,就PHPTyrant还像点样。

总体感觉,和Redis相比,Tokyo Cabinet的功能易用性要稍差一些,同时,由于Tokyo Cabinet是使用同步数据磁盘操作的方式,而Redis是使用异步数据磁盘操作的方式,所以Redis的效率也会更高一些,但反过来看,一旦出现故障,Redis丢失数据的可能性也要比Tokyo Cabinet大一些。还有一个明显的区别是,Redis会把所有的数据导入到内存里来操作,所以如果你的内存不够大的话,Tokyo Cabinet则会是更合理的选择。

分享到:
评论

相关推荐

    ttserver

    ttserver tokyocabinet-1.4.27.tar

    TTserver1.1.4

    TTserver1.1.4

    TTserver测试结果

    TTserver测试结果. 测试验证同步效率还是蛮高的。

    ttserver-lib包

    tokyocabinet-1.4.45.tar.gz tokyotyrant-1.1.41.tar.gz tokyotyrant-0.11.jar ch-tokyocabinet-java-1.24.0.jar

    memcached和TTserver的使用

    TTServer经过两年左右的发展,目前成为应用很广的NoSQL存储方案。性能好,有复制功能、代码量小,容易吃透,在key-value数据存储领域很有优势。 hash方式结合复制功能,数据安全性较高,运行稳定。 B+ Tree方式...

    ttserver.exe

    主要用于远程协助使用,比QQ远程协助速度更快,更好用一些。 被协助者请运行“ttserver.exe”运行软件之后,随便输入一个验证码,然后点击‘被协助’,并将验证码告知协助方,协助方运行“ttclient.exe”

    TTSERVER V2.1.1

    很方便的远程软件,突破距离的限制。大家帮助大家

    ttserver被协助端.rar

    ttserver被协助端,这个不用介绍了吧,大家都知道

    远程协助软件-TTVNC

    主要用于远程协助使用,比QQ远程协助速度更快,更好用一些。...若被协助方的‘被协助’按钮为灰色,请去掉后面‘自动连接’的勾,然后退出软件重新运行 ttserver.exe 输入验证码并点击被协助即可。

    TTServer-Docs:蘑菇街TeamTalk TTServer文档

    TTServer-Docs蘑菇街TeamTalk TTServer文档双击docs->html->index.html即可打开

    关于使用key/value数据库redis和TTSERVER的心得体会

    先说redisredis是一个类似memcached的key/value存储系统,它支持存储的value类型相对较多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。在此基础上,redis支持各种不同方式的排序。...

    TTServer:蘑菇街一款既是做开源又是做产品的企业办公即时通信软件

    ###项目背景 随着蘑菇街由导购向电商转型,蘑菇街自己的IM也应运而生,IM起初只是用于商家和 买家之间沟通的工具。后面我们问自己,既然已经有了用于客服的IM,为什么不自己 做一个IM,用于公司内部的沟通工具,来...

    https-github.com-mogutt-TTServer

    TeamTalk是一套开源的企业办公即时通讯软件,作为整套系统的组成部分之一,TTServer为TeamTalk 客户端提供用户登录,消息转发及存储等基础服务。 TTServer主要包含了以下几种服务器: LoginServer (C++): 登录服务器...

    远程工具ttvnc

    远程工具,才几百K的容量,小巧精致。简单实用,只要填上相同的验证码,点协助或被协助,就能能够远程帮助朋友解决问题

    远程控制软件被控端下载

    被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端

    远程控制软件 ttvnc软件

    你可以用这个软件,来帮助其他人维护电脑等等...

    TTMobile:用于通过 TTServer 存储 GPS 轨迹的 Android 应用程序

    TTMobile 用于通过 TTServer 存储 GPS 轨迹的 Android 应用程序

    ftpserver小工具

    在windows上快速搭建ftp的小工具

    开源TeamTalk(mogutt)未删减代码

    TeamTalk是一套开源的企业办公即时通讯软件,作为整套系统的组成部分之一,TTServer为TeamTalk 客户端提供用户登录,消息转发及存储等基础服务。 TTServer主要包含了以下几种服务器: LoginServer (C++): 登录服务器...

Global site tag (gtag.js) - Google Analytics