首页 > 系统 > Linux > 正文

Linux中编译安装MemcacheQ的步骤详解

2024-08-27 23:58:59
字体:
来源:转载
供稿:网友

下面来给大家整理一篇关于Linux中编译安装MemcacheQ,如果你正在学习这类开发不防一起来看看吧,希望这个例子可以帮助到各位同学.

队列(Queue)是一种常用的数据结构,在队列这种数据结构中,最先插入的元素将会最先被取出,反之最后插入的元素将会最后被取出,因此队列又称为“先进先出”(FIFO:First In First Out)的线性表.

加入元素的一端叫“队尾”,取出元素的一端叫“队头”,利用消息队列可以很好地异步处理数据的传送和存储,当遇到频繁且密集地向后端数据库中插入数据时,就可采用消息队列来异步处理这些数据写入.

MemcacheQ是一款基于Memcache协议的开源消息队列服务软件,由于其遵循了Memcache协议,因此开发成本很低,不需要学习额外的知识便可轻松掌握.

我在最近的一个项目中也应用了MemcacheQ,下面我将分享一下MemcacheQ在Linux中的编译和安装过程.

首先,MemcacheQ依赖于BerkeleyDB和Libevent,如果服务器中曾经安装过Memcached,那么Libevent应该已经存在了,否则就需要先下载安装Libevent.

下载链接如下:

Libevent:https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz

Berkeley DB:http://download.oracle.com/otn/berkeley-db/db-6.0.30.tar.gz

MemcacheQ:https://github.com/stvchu/memcacheq

安装Libevent:

  1. tar zvxf libevent-2.0.21-stable.tar.gz 
  2. cd libevent-2.0.21-stable 
  3. ./configure --prefix=/usr/local/libevent 
  4. make && make install 
  5. echo "/usr/local/libevent/lib" >> /etc/ld.so.conf 
  6. ldconfig 

安装BerkeleyDB:

BerkeleyDB简介:BerkeleyDB是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL解析等步骤.

MemcacheQ依赖BerkleyDB用于队列数据的持久化存储,以免在MemcacheQ意外崩溃或中断时,队列数据不会丢失.

  1. tar zxvf db-6.0.30.tar.gz 
  2. cd db-6.0.30/build_unix 
  3. ../dist/configure --prefix=/usr/local/berkeleydb 
  4. make && make install 
  5. ln -s /usr/local/berkeleydb/lib/libdb-6.0.so /usr/lib/ 
  6. echo "/usr/local/berkeleydb/lib/" >> /etc/ld.so.conf 
  7. ldconfig 

安装MemcacheQ:

  1. tar zxvf memcacheq-0.2.0.tar.gz 
  2. cd memcacheq-0.2.0 
  3. ./configure --prefix=/usr/local/memcacheq --with-bdb=/usr/local/berkeleydb --with-libevent=/usr/local/libevent --enable-threads 
  4. make && make install 

启动MemcacheQ:

  1. Shell 
  2. /usr/local/memcacheq/bin/memcacheq -d -uroot -r -l 127.0.0.1 -p11210 -H /usr/local/mcq -N -R -v -L 1024 -B 1024 > /usr/local/mcq/logs/mcq_error.log 2>&1 

附:MemcacheQ参数:

  1. -p <num>      TCP监听端口(default: 22201) 
  2. -U <num>      UDP监听端口(default: 0, off) 
  3. -s <file>     unix socket路径(不支持网络) 
  4. -a <mask>     unix socket访问掩码(default 0700) 
  5. -l <ip_addr>  监听网卡 
  6. -d            守护进程 
  7. -r            最大化核心文件限制 
  8. -u <username> 以用户身份运行(only when run as root) 
  9. -c <num>      最大并发连接数(default is 1024) 
  10. -v            详细输出 (print errors/warnings while in event loop) 
  11. -vv           更详细的输出 (also print client commands/reponses) 
  12. -i            打印许可证信息 
  13. -P <file>     PID文件 
  14. -t <num>      线程数(default 4) 

用PHP测试一下:

  1. <?php 
  2. $mcq = new Memcache; 
  3. $mcq->connect('127.0.0.1', 11210) or die ('Connect Error!'); 
  4. for ($i=1; $i<=5; $i++) { 
  5.     memcache_set($mcq'k'$i, 0, 0); 
  6. }  //Vevb.com 
  7. for ($i=1; $i<=6; $i++) { 
  8.     $queue = memcache_get($mcq'k'); 
  9.     if ($queue === false) { 
  10.         echo "null\n"
  11.     } else { 
  12.         echo $queue."\n"
  13.     } 
  14.  
  15. memcache_close($mcq); 
  16. ?>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表