您的位置:首页 > 数据库 > Memcache

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

2013-02-19 22:32 543 查看
文章转载自:/article/4637808.html

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 AddressForeign AddressState
PID/Program name

tcp 00:::22:::*LISTEN3162/sshd

tcp 00:::22201:::*LISTEN25375/memcacheq

udp 000.0.0.0:222010.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

部署完毕。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: