Linux安装消息教程,开源消息队列MemcacheQ在Linux中编译安装教程

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

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

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

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

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

下载链接如下:

安装Libevent

tar zvxf libevent-2.0.21-stable.tar.gz

cd libevent-2.0.21-stable

./configure --prefix=/usr/local/libevent

make && make install

echo "/usr/local/libevent/lib" >> /etc/ld.so.conf

ldconfig

1

2

3

4

5

6

tarzvxflibevent-2.0.21-stable.tar.gz

cdlibevent-2.0.21-stable

./configure--prefix=/usr/local/libevent

make&&makeinstall

echo"/usr/local/libevent/lib">>/etc/ld.so.conf

ldconfig

安装BerkeleyDB

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

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

tar zxvf db-6.0.30.tar.gz

cd db-6.0.30/build_unix

../dist/configure --prefix=/usr/local/berkeleydb

make && make install

ln -s /usr/local/berkeleydb/lib/libdb-6.0.so /usr/lib/

echo "/usr/local/berkeleydb/lib/" >> /etc/ld.so.conf

ldconfig

1

2

3

4

5

6

7

tarzxvfdb-6.0.30.tar.gz

cddb-6.0.30/build_unix

../dist/configure--prefix=/usr/local/berkeleydb

make&&makeinstall

ln-s/usr/local/berkeleydb/lib/libdb-6.0.so/usr/lib/

echo"/usr/local/berkeleydb/lib/">>/etc/ld.so.conf

ldconfig

安装MemcacheQ

tar zxvf memcacheq-0.2.0.tar.gz

cd memcacheq-0.2.0

./configure --prefix=/usr/local/memcacheq --with-bdb=/usr/local/berkeleydb --with-libevent=/usr/local/libevent --enable-threads

make && make install

1

2

3

4

tarzxvfmemcacheq-0.2.0.tar.gz

cdmemcacheq-0.2.0

./configure--prefix=/usr/local/memcacheq--with-bdb=/usr/local/berkeleydb--with-libevent=/usr/local/libevent--enable-threads

make&&makeinstall

启动MemcacheQ

/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

1

/usr/local/memcacheq/bin/memcacheq-d-uroot-r-l127.0.0.1-p11210-H/usr/local/mcq-N-R-v-L1024-B1024>/usr/local/mcq/logs/mcq_error.log2>&1

附:MemcacheQ参数

-p TCP监听端口(default: 22201)

-U UDP监听端口(default: 0, off)

-s unix socket路径(不支持网络)

-a unix socket访问掩码(default 0700)

-l 监听网卡

-d 守护进程

-r 最大化核心文件限制

-u 以用户身份运行(only when run as root)

-c 最大并发连接数(default is 1024)

-v 详细输出 (print errors/warnings while in event loop)

-vv 更详细的输出 (also print client commands/reponses)

-i 打印许可证信息

-P PID文件

-t 线程数(default 4)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

-pTCP监听端口(default:22201)

-UUDP监听端口(default:0,off)

-sunixsocket路径(不支持网络)

-aunixsocket访问掩码(default0700)

-l监听网卡

-d守护进程

-r最大化核心文件限制

-u以用户身份运行(onlywhenrunasroot)

-c最大并发连接数(defaultis1024)

-v详细输出(printerrors/warningswhileineventloop)

-vv更详细的输出(alsoprintclientcommands/reponses)

-i打印许可证信息

-PPID文件

-t线程数(default4)

用PHP测试一下

$mcq = new Memcache;

$mcq->connect('127.0.0.1', 11210) or die ('Connect Error!');

for ($i=1; $i<=5; $i++) {

memcache_set($mcq, 'k', $i, 0, 0);

}

for ($i=1; $i<=6; $i++) {

$queue = memcache_get($mcq, 'k');

if ($queue === false) {

echo "null\n";

} else {

echo $queue."\n";

}

}

memcache_close($mcq);

?>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

$mcq=newMemcache;

$mcq->connect('127.0.0.1',11210)ordie('Connect Error!');

for($i=1;$i<=5;$i++){

memcache_set($mcq,'k',$i,0,0);

}

for($i=1;$i<=6;$i++){

$queue=memcache_get($mcq,'k');

if($queue===false){

echo"null\n";

}else{

echo$queue."\n";

}

}

memcache_close($mcq);

?>

相关内容:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值