Memcache 持久化消息队列MemcacheQ
来源:互联网 发布:淘宝已发货无需物流 编辑:程序博客网 时间:2024/06/06 16:46
官网地址: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
参数说明:
-p <num> TCP监听端口(default: 22201) -U <num> UDP监听端口(default: 0, off) -s <file> unix socket路径(不支持网络) -a <mask> unix socket访问掩码(default 0700) -l <ip_addr> 监听网卡 -d 守护进程 -r 最大化核心文件限制 -u <username> 以用户身份运行(only when run as root) -c <num> 最大并发连接数(default is 1024) -v 详细输出 (print errors/warnings while in event loop) -vv 更详细的输出 (also print client commands/reponses) -i 打印许可证信息 -P <file> PID文件 -t <num> 线程数(default 4) --------------------BerkeleyDB Options------------------------------- -m <num> BerkeleyDB内存缓存大小, default is 64MB -A <num> 底层页面大小, default is 4096, (512B ~ 64KB, power-of-two) -H <dir> 数据库家目录, default is '/data1/memcacheq' -L <num> 日志缓冲区大小, default is 32KB -C <num> 多少秒checkpoint一次, 0 for disable, default is 5 minutes -T <num> 多少秒memp_trickle一次, 0 for disable, default is 30 seconds -S <num> 多少秒queue stats dump一次, 0 for disable, default is 30 seconds -e <num> 达到缓存百分之多少需要刷新, default is 60% -E <num> 一个单一的DB文件有多少页, default is 16*1024, 0 for disable -B <num> 指定消息体的长度,单位字节, default is 1024 -D <num> 多少毫秒做一次死锁检测(deadlock detecting), 0 for disable, default is 100ms -N 开启DB_TXN_NOSYNC获得巨大的性能改善, default is off -R 自动删除不再需要的日志文件, default is off四、使用测试
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
set queue_test 0 0 3abcSTOREDget queue_testVALUE queue_test 0 3abcENDget queue_testEND可以看到,和memcache协议基本一致,只是把key name换成queue name,而且在set的命令中,忽略了expire_time的参数。毕竟mq的数据存储是存在berkeleyDB中,做了持久化存储,没有内存的过期时间。当使用set命令时,就向指定的消息队列中写入了一条新消息,也就是向BerkeleyDB中新insert了一条数据,当使用get命令时,就从 指定队列中取出一条新消息,也就是向BerkeleyDB中delete了一条数据。
2.查看统计情况
stats 查看memcacheQ统计情况
stats queue 查看队列统计情况
set queue_test 0 0 3xxxSTOREDstatsSTAT pid 13554STAT uptime 173STAT time 1428161993STAT version 0.2.0STAT pointer_size 32STAT rusage_user 0.032994STAT rusage_system 0.270958STAT curr_connections 5STAT total_connections 6STAT connection_structures 6STAT get_cmds 2STAT get_hits 1STAT set_cmds 2STAT set_hits 2STAT bytes_read 120STAT bytes_written 81STAT threads 4ENDstats queueSTAT queue_test 2/1END3.删除一个队列
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
Sat Apr 4 08:46:54 2015 Local time42253 Queue magic number4 Queue version number1024 Fixed-length record size0x20 Fixed-length record pad4096 Underlying database page size16384 Underlying database extent size3 Number of records in the database3 Number of data items in the database1 Number of database pages0 Number of bytes free in database pages (100% ff)1 First undeleted record4 Next available record number
- Memcache 持久化消息队列MemcacheQ
- Memcache 持久化消息队列MemcacheQ
- 持久化消息队列之MEMCACHEQ
- 分布式持久化消息队列memcacheq的安装部署
- 持久化消息队列memcacheq的安装配置
- MemcacheQ(消息队列)
- memcacheq安装与消息队列
- 消息队列服务器 memcacheq的搭建
- php消息队列MemcacheQ 安装与使用
- RabbitMQ之队列与消息持久化
- RabbitMQ之队列与消息持久化
- rabbitmq消息和队列持久化
- RabbitMQ队列与消息的持久化
- PHP结合memcacheq消息队列解决并发问题
- PHP结合memcacheq消息队列解决并发问题
- 消息队列在项目中的使用(memcacheq)
- PHP结合memcacheq消息队列解决并发问题
- PHP结合memcacheq消息队列解决并发问题
- 1I
- POJ2225 Asteroids! (三维的BFS求最短路)
- 闲置空调如何重启
- C#根据html生成PDF
- 闲置空调如何重启
- Memcache 持久化消息队列MemcacheQ
- 空调除霜功能介绍
- ubuntu运行级别
- Android开发内存管理之道
- Programming Assignment 2 Seam Carving 暴力实现
- Java中创建URL的常见问题及解决方案
- 空调除霜功能介绍
- php自己写字符串翻转函数
- GPS之MTK平台代码小结以及gps协议注释