memcacheq的安装、配置、使用

说到memcacheq,大家可能会想到memcached。不错,memcacheq是在memcached的基础上开发的,保留了memcached的高效,又加入了BerkeleyDB作为持久化方案,因此,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
部署完毕。

你可能感兴趣的:(memcached,Queue,memcache,memcacheq,BerkeleyDB)