分布式持久化消息队列memcacheq的安装部署

1、安装前准备工作
要安装memcacheq,需要先安装 libevent BerkeleyDB
a、安装libevent
wget --no-check-certificate https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure
make
make install
b、安装 BerkeleyDB
wget http://download.oracle.com/otn/berkeley-db/db-5.3.21.tar.gz
tar zxvf db-5.3.21.tar.gz
cd db-5.3.21
cd build_unix
../dist/configure
make
make install

在/etc/ld.so.conf里加入下面两行
/usr/local/lib
/usr/local/BerkeleyDB.5.3/lib
运行ldconfig

2、安装memcacheq
wget http://memcacheq.googlecode.com/files/memcacheq-0.2.0.tar.gz
tar zxvf memcacheq-0.2.0.tar.gz
cd memcacheq-0.2.0
./configure --enable-threads --with-libevent=/usr/local --with-bdb=/usr/local/BerkeleyDB.5.3
make
make install

3、配置memcacheq
install -d -o nobody -g nobody /data/memcacheq
memcacheq -d -r -u nobody -H /data/memcacheq -N -R -v -L 1024 -B 1024 &> /var/log/mq_error.log
查看监听端口
[root@vm3 ~]# netstat -ntupl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::22 :::* LISTEN 3162/sshd
tcp 0 0 :::22201 :::* LISTEN 25375/memcacheq
udp 0 0 0.0.0.0:22201 0.0.0.0:* 25375/memcacheq

4、使用
a、 使用 php语言的memcache扩展作为 客户端测试
本例使用的是php源码编译安装
安装php扩展memcache
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar zxvf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
在/usr/local/php/lib/php.ini里编辑或添加如下两行
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension=memcache.so
重启php-fpm
service php-fpm restart
验证memcache扩展是否加载
ok,加载成功
编写php测试文件:
<?php
$m = new memcache();
$m->connect('192.168.18.240',22201);
$m->set('mailq','zhangsan');
$m->set('mailq','lisi');
$m->set('mailq','wangwu');
print '------push bellow into mailq queue------<br>';
print 'zhangsan<br>';
print 'lisi<br>';
print 'wangwu<br>';
print '------get mailq from mailq queue------<br>';
print 'first:'.$m->get('mailq').'<br>';
print 'second:'.$m->get('mailq').'<br>';
print 'third:'.$m->get('mailq').'<br>';
print 'fourth:'.$m->get('mailq');
$m->close();
下面是上面php代码运行结果:
------push bellow into mailq queue------
zhangsan
lisi
wangwu
------get mailq from mailq queue------
first:zhangsan
second:lisi
third:wangwu
fourth:
可以发现,我们先存入的将先取出,符合先进先出原则 FIFO
b、使用telnet作为客户端测试
telnet 192.168.18.240 22201
Trying 192.168.18.240...
Connected to localhost (192.168.18.240).
Escape character is '^]'.
只有2个命令用来操作队列:
set
get
命令语法:
添加一个消息到队列末尾
set <queue name> <flags> 0 <message_len>\r\n
<put your message body here>\r\n
STORED\r\n
注意:如果你的队列不存在,MQ将自动创建一个新队列。原来的'expire time'字段被服务器忽略。

从队列头部取一个消息
get <queue name>\r\n
VALUE <queue name> <flags> <message_len>\r\n
<your message body will come here>\r\n
END\r\n

set例子:
set mailq 0 0 8
zhangsan
STORED
set mailq 0 0 4
lisi
STORED
set mailq 0 0 6
wangwu
STORED
get例子:
get mailq
VALUE mailq 0 8
zhangsan
END
使用'stats queue'查看你的当前队列:
stats queue
STAT mailq 3/1
END
删除一个队列:
delete mailq
DELETED
使用db_stat命令查看一个队列有多少记录:
/usr/local/BerkeleyDB.5.3/bin/db_stat -d mailq
Fri Feb    8 01:26:29 2013                Local time
42253     Queue magic number
4             Queue version number
1024        Fixed-length record size
0x20        Fixed-length record pad
4096        Underlying database page size
16384     Underlying database extent size
2             Number of records in the database
2             Number of data items in the database
1             Number of database pages
1024        Number of bytes free in database pages (75% ff)
2             First undeleted record
4             Next available record number
部署完毕。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值