TokyoTyrant 队列服务器

  Tokyo Tyrant最常用的功能就是提供key->value的数据存储服务,再加上Tokyo Tyrant的lua语言扩展就可以实现很多适合自己需求的功能,例如:定时清理缓存数据(ttserver本身并不去管数据的过期时间,当然它采用的是磁盘存储,可以有很大的空间用来存放数据,不必去管数据的过期);session服务器;队列服务器;记数器等等!

  下面就来说一说,如何用Tokyo Tyrant构建一个队列服务器:

  1. 安装

# 安装 Tokyo Cabinet

wget http
: // 1978th.net/tokyocabinet/tokyocabinet-1.4.45.tar.gz
tar zxvf tokyocabinet - 1.4 . 45 . tar . gz
cd tokyocabinet
- 1.4 . 45
./ configure  -- enable - off64
# 32位系统需要 --enable-off64,以让它支持大于2GB的文件
make
make install

cd 
../

# ttserver运行时,支持一些扩展脚本,这里采用lua脚本,所以需要lua的支持,安装 lua
wget http : // www.lua.org/ftp/lua-5.1.4.tar.gz
tar zxvf lua - 5.1 . 4 . tar . gz
cd lua
- 5.1 . 4 . tar . gz
# 要根据系统而定,直接make它会有提示
make linux
make install
ln 
- / usr / local / bin / lua  / usr / bin / lua

cd 
../
# 安装Tokyo Cabinet 的 lua 扩展
wget http : // 1978th.net/tokyocabinet/luapkg/tokyocabinet-lua-1.9.tar.gz
tar zxvf tokyocabinet - lua - 1.9 . tar . gz
cd tkoyocabinet
- lua - 1.9 . tar . gz
./ configure
make
make install

cd 
../

// 安装 Tokyo Tyrant
wget http : // 1978th.net/tokyotyrant/tokyotyrant-1.1.40.tar.gz
tar zxvf tokyotyrant - 1.1 . 40 . tar . gz
./ configure  -- enable - lua  -- with - lua
make
make install

cd 
../

 

  2. 配置

  在 tokyo tyrant 的源码目录下有一个 ext 文件夹,里面存放的就是一些 lua 扩展脚本,queue.lua 就是用来提供队列服务的,这里我将 queue.lua 复制到 /etc/ttserver 里面去,打开该脚本,里面提供三个函数,主要是:

  enqueue(key, value),进队列,key为队列名称,value为队列值。

  dequeue(key, max),出队列,key为队列名称,max为每次从队列中取出多少条记录。

  queuesize(key),队列的长度,key为队列名称。

  3. 启动

# ttserver -host 127.0.0.1 -port 11221 -thnum 8 -dmn -pid /data/ttserver/my_queue/ttserver.pid -log 
/ data / ttserver / my_queue / ttserver . log   - le  - ulog  / data / ttserver / my_queue /   - ulim 32m  - sid  1   - rts 
/ data / ttserver / my_queue / ttserver . rts  - ext  / etc / ttserver / queue . lua 
/ data / ttserver / my_queue / database . tch

 

 

 TokyoTyrant 队列服务器

  启动参数说明可以参考这里:http://blog.s135.com/post/362/

   4. 测试

  向队列服务器里插入一条记录,my_queue为队列名,hello是记录值。如果插入成功就会返回:ok

# tcrmgr ext 127.0.0.1:11221 enqueue my_queue hello

 

   从队列服务器里取出一条记录,my_queue为队列名,1为只取一条记录。返回队列头部的第一条记录值。

# tcrmgr ext 127.0.0.1:11221 dequeue my_queue 1

 

 TokyoTyrant 队列服务器

  5. 客户端访问

  一般在web中有很多需要用到队列的地方,刚好,演示一下如何用tokyo tyrant为PHP提供队列服务。

  我这里用到的是PHP版本的 tokyo tyrant 客户端,如果想用so版本的,就需要去 http://pecl.php.net/package/tokyo_tyrant 下载后编译安装,这里我以 php 版的客户端测试。

  循环向队列写入100条记录,并一次取出10条记录,代码如下:

<? php
include ( ' Tyrant/Tyrant.php ' );

$tt   =  Tyrant :: connect( ' 127.0.0.1 ' ,   ' 11221 ' );

for ( $i = 1 $i <= 100 $i ++ )
{
    
$tt -> ext( ' enqueue ' ,   ' my_queue ' ,   $i ,   0 );
}

var_dump ( $tt -> ext( ' dequeue ' ,   ' my_queue ' ,   10 ,   0 ));

// 上面ext方法的最后一个参数0,为是否开启锁机制,还有下面两个值可选:
//一个相当于行锁,一个相当于表锁,一般第一个就够用了
//Tyrant::XOLCKREC for record locking
//Tyrant::XOLCKGLB for global locking

?>

 

 运行结果:

 TokyoTyrant 队列服务器

  返回的值是一个字符串,每条记录之间用"\n"分隔,最后也有一个"\n"。

  接着再通过 tcrmgr 去队列中取出10条记录:

TokyoTyrant 队列服务器

  队列服务器搭建完毕,以ttserver一直以来的表现,效率方面应该不是问题,这里我也没有进行大量的这方面的测试。

 

http://www.xhttp.cn/2010/09/24 

转载于:https://www.cnblogs.com/ccw5510/archive/2010/09/27/1837159.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值