MemcacheQ作為簡單的分布式隊列服務,因為對MemcacheQ不了解,不少人在MemcacheQ的安裝上遇到了不少麻煩,小編就為大家詳細介紹下MemcacheQ在Linux系統下的編譯安裝,以便大家有更詳細的了解。
隊列(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
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
安裝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
安裝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
啟動MemcacheQ
Shell
/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參數
-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)
用PHP測試一下
PHP
《?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);
?》
上面就是Linux編譯安裝MemcacheQ的方法介紹了,在安裝MemcacheQ前,需要先安裝Libevent和BerkeleyDB。