官网地址:http://memcachedb.org/memcacheq/
项目地址:
http://groups.google.com/group/memcachedb
https://github.com/stvchu/memcachedb
一、特点
1.简单高效,基于memcache协议,这意味着只要客户端支持memcache协议即可使用。
2.队列数据存储于BDB,持久保存。
3.并发性能好。
4.支持多条队列。
memcacheQ依赖于Berkeley DB和libevent。Berkeley DB用于持久化存储队列的数据,避免在memcacheq崩溃或这服务器当掉时候,不至于数据丢失。对于并发量较高的web环境,特别是数据库写入操作过多的情景,使用队列可大大缓解因并发问题造成的数据库锁死问题。
memcacheQ最大的优势是:它是基于Memcached开发的,可以通过各种Memcached命令对它进行操作。基于Memcached开发的应用完全不需要做任何修改。
二、安装
memcacheQ依赖于libevent和BDB(BerkleyDB),所以在安装memcacheQ之前先安装libevent和BerkleyDB。
mkdir libevent berkeleyDB
1.安装libevent
libevent 1.4.x or later
下载地址: http://www.monkey.org/~provos/libevent/
wget http://jaist.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz
tar -zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/home/slim/libevent
make
make install
使用root用户将libevent运行库的路径添加到系统配置里面
echo "/home/slim/libevent/lib/" >> /etc/ld.so.conf
/sbin/ldconfig
2.安装Berkeley DB
Berkeley DB 4.7 or later
下载地址:http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
wget http://download.oracle.com/otn/berkeley-db/db-6.1.23.tar.gz
tar -zxvf db-6.1.23.tar.gz
cd db-6.1.23
cd build_unix/
../dist/configure --prefix=/home/slim/berkeleyDB
make
make install
使用root用户将Berkeley+Db运行库的路径添加到系统配置里面
echo "/home/slim/berkeleyDB/lib/" >> /etc/ld.so.conf
/sbin/ldconfig
3.安装memcacheQ
下载软件包:http://code.google.com/p/memcacheq/downloads/list,需翻墙下载
wget http://code.google.com/p/memcacheq/downloads/detail?name=memcacheq-0.2.0.tar.gz&can=2&q=
mkdir memcacheq
tar -zxvf memcacheq-0.2.0.tar.gz
cd memcacheq-0.2.0
./configure --prefix=/home/slim/memcacheq -with-bdb=/home/slim/berkeleyDB -with-libevent=/home/slim/libevent -enable-threads
make
make install
三、启动
cd ~/home/slim/memcacheq
建立数据和日志目录,用于memcacheQ保存数据和日志信息:
mkdir data logs
启动memcacheq:
./bin/memcacheq -d -l 192.168.36.189 -r -H /home/slim/memcacheq/data -N -R -v -L 1024 -B 1024 > /home/slim/memcacheq/logs/memcacheq.log 2>&1
参数说明:
四、使用测试
1.使用mq时只需要用到两个命令:set和get
set <queue name> <flags> 0 <message_len>
<put your message body here>
STORED
get <queue name>
VALUE <queue name> <flags> <message_len>
<your message body will come here>
END
可以看到,和memcache协议基本一致,只是把key name换成queue name,而且在set的命令中,忽略了expire_time的参数。毕竟mq的数据存储是存在berkeleyDB中,做了持久化存储,没有内存的过期时间。当使用set命令时,就向指定的消息队列中写入了一条新消息,也就是向BerkeleyDB中新insert了一条数据,当使用get命令时,就从 指定队列中取出一条新消息,也就是向BerkeleyDB中delete了一条数据。
2.查看统计情况
stats 查看memcacheQ统计情况
stats queue 查看队列统计情况
3.删除一个队列
telnet 192.168.36.189 22201
delete queue_test
4.也可以使用db_stat查看一个队列有多少记录
cd /home/slim/memcacheq/data/
/home/slim/berkeleyDB/bin/db_stat -d queue_test