MemcacheQ 消息队列的安装和使用

简介

MemcacheQ 是一个基于轻量级消息队列服务器。新浪微博曾经大规模使用,它有几个特点

  1. 无与伦比的简单
  2. 非常快
  3. 支持多个队列
  4. 高并发性
  5. 与memcache协议兼容

准备

  1. MemcacheQ memcacheq-0.2.0.tar.gz 官网
  2. libevent libevent-2.0.22-stable.tar.gz 官网
  3. BerkeleyDB db-6.1.26.tar.gz 官网

安装

  1. libevent
  tar xzf libevent-2.0.22-stable.tar.gz
  cd libevent-2.0.22-stable
  ./configure
  make && make install
  ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
  1. BerkeleyDB
 tar xzf db-6.1.23.tar.gz
 cd db-6.1.23
 cd build_unix
 ../dist/configure --prefix=/usr/local/BerkeleyDB.6.1
 make && make install
  1. memcacheQ
 tar xzf memcacheq-0.2.0.tar.gz
 cd memcacheq-0.2.0
 ./configure --enable-threads --with-bdb=/usr/local/BerkeleyDB.6.1
 make
 make install
  1. 测试是否安装成功
/usr/local/bin/memcacheq -h
-p <num>      TCP port number to listen on (default: 22201)
-U <num>      UDP port number to listen on (default: 0, off)
-s <file>     unix socket path to listen on (disables network support)
-a <mask>     access mask for unix socket, in octal (default 0700)
-l <ip_addr>  interface to listen on, default is INDRR_ANY
-d            run as a daemon
-r            maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-c <num>      max simultaneous connections, default is 1024
-v            verbose (print errors/warnings while in event loop)
-vv           very verbose (also print client commands/reponses)
-h            print this help and exit
-i            print license info
-P <file>     save PID in <file>, only used with -d option
-t <num>      number of threads to use, default 4
--------------------BerkeleyDB Options-------------------------------
-m <num>      in-memmory cache size of BerkeleyDB in megabytes, default is 64MB
-A <num>      underlying page size in bytes, default is 4096,
-H <dir>      env home of database, default is '/data1/memcacheq'
-L <num>      log buffer size in kbytes, default is 32KB
-C <num>      do checkpoint every <num> seconds, 0 for disable, default is 5 minutes
-T <num>      do memp_trickle every <num> seconds, 0 for disable, default is 30 seconds
-S <num>      do queue stats dump every <num> seconds, 0 for disable, default is 30 seconds
-e <num>      percent of the pages in the cache that should be clean, default is 60%
-E <num>      how many pages in a single db file, default is 16*1024, 0 for disable
-B <num>      specify the message body length in bytes, default is 1024
-D <num>      do deadlock detecting every <num> millisecond, 0 for disable, default is 100ms
-N            enable DB_TXN_NOSYNC to gain big performance improved, default is off
-R            automatically remove log files that are no longer needed, default is off

使用

  1. 启动服务脚本
/usr/local/bin/memcacheq -d -r -H /opt/memcacheq -N -R -v -L 1024 -B 1024 -u root > /opt/logs/memcacheq/mq_error.log 2>&1
  1. 常用参数
## -d 作为守护进程
## -r 最大描述文件数
## -H BerkeleyDB文件的保存目录
## -N 改善性能
## -v 详细输出
## -L 日志缓存大小 单位KB
## -B 数据最大长度
## -u 以用户的身份来运行
  1. shell中使用
telnet 127.0.0.1 22201
  1. php中使用
    $memcache_obj = new Memcache;
    $memcache_obj->connect('127.0.0.1', 22201);
    $memcache_obj->set('name','keyvalue',0,0);

    $task = $memcache_obj->get('name');
    echo $task
  1. shell 中使用
set <queue name> <flags> 0 <message_len>
<put your message body here>
STORED
示例:
set test 0 0 1
a
STORED

输入图片说明

stats queue # 查看队列
delete name # 表示删除name的队列

输入图片说明

上图表示队列name里面有4条信息,读取了3条

###问题集合

  • /usr/local/bin/memcacheq: error while loading shared libraries: libdb-6.1.so: cannot open shared object file: No such file or directory

    在/etc/ld.so.conf中加入BerkeleyDB 的lib目录这一行,然后ldconfig

###扩展阅读

转载于:https://my.oschina.net/2688/blog/610575

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值