龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 操作系统 > LINUX系统 >

CentOS5.3 下Tokyo Cabinet和Tokyo Tyrant以及php的TokyoTyrant扩展安装

时间:2011-11-30 17:00来源:未知 作者:admin 点击:
分享到:
1. TTServer介绍: Tokyo Cabinet 是一款 DBM 数据库,该数据库读写非常快,哈希模式写入 100 万条数据只需 0.643 秒,读取 100 万条数据只需 0.773 秒,是 Berkeley DB 等 DBM 的几倍。利用 Tokyo Tyrant

1. TTServer介绍:

Tokyo Cabinet 是一款DBM 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是Berkeley DB DBM 的几倍。利用Tokyo Tyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统。key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。

Tokyo Tyrant 
是由同一作者开发的Tokyo Cabinet 数据库网络接口。它拥有Memcached兼容协议,也可以通过HTTP协议进行数据交换。Tokyo Tyrant 加上Tokyo Cabinet,构成了一款支持高并发的分布式持久存储系统,对任何原有Memcached客户端来讲,可以将Tokyo Tyrant看成是一个Memcached,但是,它的数据是可以持久存储的。

 

基本概念:

Tokyocabinet: 一个key-valueDBM数据库,但是没有提供网络接口,简称TC

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

 

2. 包下载:

# wgethttp://tokyocabinet.sourceforge.net/tokyocabinet-1.4.28.tar.gz

# wget http://tokyocabinet.sourceforge.net/tyrantpkg/tokyotyrant-1.1.33.tar.gz

 

3. 安装tokyocabinet

# tar -zxvftokyocabinet-1.4.28.tar.gz; 

# cd tokyocabinet-1.4.28;

# ./configure--prefix=/usr/local/tokyocabinet


*** 问题***

a. 编译器没有安装,解决办法:

# yum –y install gcc.i386

 

b. zlib组件找不到,解决办法:

# yum install bzip2.i386bzip2-devel.i386

 

4.安装tokyotyrant

# tar -zxvftokyotyrant-1.1.33.tar.gz

# cd tokyotyrant-1.1.33

# ./configure--prefix=/usr/local/tokyotyrant --with-tc=/usr/local/tokyocabinet

#make && make install

 

注:安装Tokyo Cabinet时指定目录,安装Tokyo Tyrant时用--with-tc指定Tokyo Cabinet的目录。

 

5.   创建启动用户,并启动。

#mkdir /var/lib/ttserver                                                         --创建数据文件存放目录

#chown –R ttserver.ttserver /var/lib/ttserver/

#groupadd ttserver                                                                   --添加组

#useradd –m –s /bin/bash –g ttserver ttserver                         --创建用户

创建用户ttserver,服务会以ttserver用户启动。

 

#cd /usr/local/

#chown -R ttserver.ttserver tokyocabinet/ tokyotyrant/        --调整权限

#su ttserver;

#./bin/ttserver -host 127.0.0.1 -port 11211 -thnum 8 -dmn -pid/var/lib/ttserver/ttserver.pid -log /var/lib/ttserver/ttserver.log -le -ulog/var/lib/ttserver/ -ulim 128m -sid 1 -rts /var/lib/ttserver/ttserver.rts/var/lib/ttserver/database.tcb

注意:

如果启动的时候报告错误

/ttserver: error while loading shared libraries: libtokyocabinet.so.8: cannot open shared object file: No such file or directory

解决办法:
ln -s /usr/local/tokyocabinet/lib/libtokyocabinet.so.8 /usr/local/tokyotyrant/lib/libtokyocabinet.so.8
把tc目录里的libtokyocabinet.so.8作软连接到ttserver里的lib即可,然后启动ttserver成功.

 

在生产服务器上确保文件描述符够用,默认为1024,启动ttserver前可提高此项值:

# ulimit -SHn51200

 

参数说明:

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

 

6.   验证服务

通过http试调用,以curl命令为例,介绍如何操作tokyotyrant: 

(1). 写入数据库,将数据”value”写入到”key”:

[root@localhosttokyotyrant]# curl -X PUT http://127.0.0.1:11211/key -d "value"

Created

 

(2). 读取”key”的值:

[root@localhosttokyotyrant]# curl http://127.0.0.1:11211/key

value

 

(3). 删除”key”的数据:

[root@localhosttokyotyrant]# curl -X DELETE http://127.0.0.1:11211/key

OK

 

7.   停止服务

找到ttserver服务进程号,并kill掉:

#kill -TERM `cat /var/lib/ttserver/ttserver.pid`

 

tokyotyrant php扩展安装:

直接从这里下载相应版本:http://pecl.php.net/package/tokyo_tyrant我这里下载的是0.5.0


如果系统没有安装phpize

于是安装: yum install php-devel   ,因为PHPize 是属于php 的 devel .

然后进入目录:

[root@localhost tokyo_tyrant-0.5.0]# phpize

[root@localhost tokyo_tyrant-0.5.0]# ./configure

如果configure的报错:

checking that Tokyo Tyrant is at least version 1.1.24... yes
checking for Tokyo Cabinet... not found
configure: error: Please reinstall the Tokyo Cabinet distribution

在config.m4里有写:

PHP_ARG_WITH(tokyo-tyrant, whether to enable tokyo tyrant support,
[  --with-tokyo-tyrant[=DIR]       Enable tokyo tyrant support. DIR is the prefix to Tokyo Tyrant installation directory.], yes)

PHP_ARG_WITH(tokyo-cabinet-dir, directory of the Tokyo Cabinet installation,
[  --with-tokyo-cabinet-dir[=DIR]       DIR is the prefix to Tokyo Cabinet installation directory.], yes)

PHP_ARG_ENABLE(tokyo-tyrant-session, whether to enable tokyo tyrant session handler support,
[  --disable-tokyo-tyrant-session    Disables tokyo tyrant session handler support], yes, no)

指定TT和TC的路径就好了

./configure --with-tokyo-tyrant=/usr/local/tokyotyrant   --with-tokyo-cabinet-dir=/usr/local/tokyocabinet

[root@localhost tokyo_tyrant-0.5.0]# make

[root@localhost tokyo_tyrant-0.5.0]# make install

Installing shared extensions:     /usr/local/php533/lib/php/extensions/no-debug-non-zts-20090626/

(/usr/local/php533/lib/php/extensions/no-debug-non-zts-20090626/就是tokyo_tyrant.so所在的路径)

安装完成以后,在php.ini里面增加一行extension = tokyo_tyrant.so,然后tt扩展就生效了。
debian:/home/software# php -m | grep tokyo
tokyo_tyrant

 

参考资料

(1). http://blog.s135.com/post/362/4/1/

(2). http://www.162cm.com/p/tokyotyrant.html#toc23


精彩图集

赞助商链接