如何在linux環(huán)境中安裝memcacheq-創(chuàng)新互聯(lián)

如何在linux環(huán)境中安裝memcacheq?針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

成都創(chuàng)新互聯(lián)成立與2013年,先為濮陽縣等服務(wù)建站,濮陽縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為濮陽縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

一,MEMCACHEQ的應(yīng)用背景
Web應(yīng)用中為什
么會(huì)需要消息隊(duì)列?主要原因是由于在高并發(fā)環(huán)境下,由于來不及同步處理,請求往往會(huì)發(fā)生堵塞,比如說,大量的insert,update之類的請求同時(shí)到達(dá)mysql,直接導(dǎo)致無數(shù)的行鎖表鎖,甚至最后請求會(huì)堆積過多,從而觸發(fā)too manyconnections錯(cuò)誤。通過使用消息隊(duì)列,我們可以異步處理請求,從而緩解系統(tǒng)的壓力。在Web2.0的時(shí)代,高并發(fā)的情況越來越常見,從而使消息隊(duì)列有成為居家必備的趨勢,相應(yīng)的也涌現(xiàn)出了很多實(shí)現(xiàn)方案,像Twitter以前就使用RabbitMQ實(shí)現(xiàn)消息隊(duì)列服務(wù),現(xiàn)在又轉(zhuǎn)而使用Kestrel來實(shí)現(xiàn)消息隊(duì)列服務(wù),此外還有很多其他的選擇,比如說:ActiveMQ,ZeroMQ等。

上述消息隊(duì)列的軟件中,大多為了實(shí)現(xiàn)AMQP,STOMP,XMPP之類的協(xié)議,變得極其重量級,但在很多Web應(yīng)用中的實(shí)際情況是:我們只是想找到一個(gè)緩解高并發(fā)請求的解決方案,不需要雜七雜八的功能,一個(gè)輕量級的消息隊(duì)列實(shí)現(xiàn)方式才是我們真正需要的。

二,MEMCACHEQ的特性
1 簡單易用
2 處理速度快
3 多條隊(duì)列
4 并發(fā)性能好
5 與memcache的協(xié)議兼容。這就意味著只要裝了memcache的extension就可以了,不需要額外的插件。

三,安裝
MEMCACHEQ依賴于libevent和BerkleyDB。
BerkleyDB用于持久化存儲隊(duì)列的數(shù)據(jù)。 這樣在MEMCACHEQ崩潰或者服務(wù)器掛掉的時(shí)候,
不至于造成數(shù)據(jù)的丟失。這一點(diǎn)很重要,很重要。
它的安裝依賴于BerkeleyDB 和 libevent,所以要先安裝這BerkeleyDB和libevent:
其中l(wèi)ibevent如果你安裝過memcached就已經(jīng)安裝了,如果不確定,就檢查一下吧

1. 先檢查libevent, libevent-devel是否已經(jīng)安裝:  rpm -qa|grep libevent 輸出中必須包含libevent, libevent-deve, 如果缺失,使用以下命令安裝:
yum install libevent yum
install libevent-devel
注意事項(xiàng):libevent, libevent-devel優(yōu)先使用yum安裝源,光盤鏡像中的rpm包安裝,這樣穩(wěn)定性和兼容性可得到保證,網(wǎng)上流傳的使用源碼安裝libevent的方法會(huì)有問題,因?yàn)楹芸赡芟到y(tǒng)已經(jīng)安裝libevent, 再使用源碼安裝, 必然導(dǎo)致沖突,造成意外問題,所以一定要使用上述命令檢查系統(tǒng)是否已經(jīng)安裝相應(yīng)的庫

2. 安裝BerkleyDB
1.tar zxvf bdb-5.3.3.tar.gz
2.cd db-5.3.3/
#需要進(jìn)入特定操作系統(tǒng)編譯環(huán)境,更常規(guī)軟件的編譯有些區(qū)別
3.cd build_unix/
4. ../dist/configure --prefix=/usr/local/berkeleydb
#如果沒有指定特殊安裝路徑,編譯完成,需要將Berkeley Db運(yùn)行庫的路徑添加到系統(tǒng)配置里面
echo "/usr/local/BerkeleyDB.5.3/lib/" >> /etc/ld.so.conf
#重載系統(tǒng)Ld運(yùn)行庫
ldconfig
5. make & make install
記得改/etc/ld.so.conf文件,添加/usr/local/BerkeleyDB.5.3/lib啊,不然后面的mcq會(huì)安裝錯(cuò)誤。
而BerkeleyDB就要去下載了
點(diǎn)擊下載Berkeley DB 5.3.21.rar
下面安裝memcacheq,
先下載一個(gè)memcacheq-0.2.0.rar
解壓,進(jìn)目錄
./configure –with-bdb=/usr/local/BerkeleyDB.5.1 –with-libevent=/usr/local/lib –enable-threads
make
make install
關(guān)鍵是紅色字體那一步,一定輸入正確,不然make不通過,無法安裝

下面是啟動(dòng)
memcacheq -d -r -u root -p21201 -H /data/memcacheq -N -v -L 1024 -B 1024 > /data/mq_error.log 2>&1
這里不推薦使用root用戶,有些帖子里說不可以,我這里測試是可以的,不過可能會(huì)不安全。
1 下面是啟動(dòng)時(shí)候的參數(shù)
使用memcacheq -h 的命令來查看命令行選項(xiàng)
2 這個(gè)是正確的啟動(dòng)memcacheq:memcacheq -d -uroot -r -p11212 -H /home/wwwroot/mcq -N -R -v -L 1024 -B 1024 > /home/wwwlogs/mq_error.log 2 > &1
3 這個(gè)不知道為什么就不行/usr/local/memcacheq/bin/memcacheq -d -l 127.0.0.1 -A 8192 -H /data/memcacheq -B 65535 -N -R -u root
-p <num> TCP監(jiān)聽端口(default: 22201)
 -U <num> UDP監(jiān)聽端口(default: 0, off)
 -s <file> unix socket路徑(不支持網(wǎng)絡(luò))
 -a <mask> unix socket訪問掩碼(default 0700)
 -l <ip_addr> 監(jiān)聽網(wǎng)卡
 -d 守護(hù)進(jìn)程
 -r 較大化核心文件限制
 -u <username> 以用戶身份運(yùn)行(only when run as root)
 -c <num> 較大并發(fā)連接數(shù)(default is 1024)
 -v 詳細(xì)輸出 (print errors/warnings while in event loop)
 -vv 更詳細(xì)的輸出 (also print client commands/reponses)
 -i 打印許可證信息
 -P <file> PID文件
 -t <num> 線程數(shù)(default 4)
 --------------------BerkeleyDB Options-------------------------------
 -m <num> BerkeleyDB內(nèi)存緩存大小, default is 64MB
 -A <num> 底層頁面大小, default is 4096, (512B ~ 64KB, power-of-two)
 -H <dir> 數(shù)據(jù)庫家目錄, default is '/data1/memcacheq'
 -L <num> 日志緩沖區(qū)大小, 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> 達(dá)到緩存百分之多少需要刷新, default is 60%
 -E <num> 一個(gè)單一的DB文件有多少頁, default is 16*1024, 0 for disable
 -B <num> 指定消息體的長度,單位字節(jié), default is 1024
 -D <num> 多少毫秒做一次死鎖檢測(deadlock detecting), 0 for disable, default is 100ms
 -N 開啟DB_TXN_NOSYNC獲得巨大的性能改善, default is off
 -R 自動(dòng)刪除不再需要的日志文件, default is off
測試

三、測試
1.telnet 10.218.31.121 22201
2.stats
2.stats queue
3.set q4  0 0 5
4 hello
5 get q4
6 stats queue
7 delete q4
如果set的時(shí)候補(bǔ)成功not_STORED的話,檢查一下你的啟動(dòng)命令吧,參數(shù)沒設(shè)置好,如果你是新手,干翠多看幾個(gè)帖子,多嘗試啟動(dòng)命令,換換參數(shù),就行了

四,使用
使用以上命令啟動(dòng)mq后,(注意上面的-B參數(shù)表示messag的body長度不能超過1024 bytes),使用mq時(shí)只需要用到兩個(gè)命令:set和get:
set <queue name> <flags> 0 <message_len>\r
<put your message body here>\r
STORED\r
get <queue name>\r
VALUE <queue name> <flags> <message_len>\r
<your message body will come here>\r
END\r
可以看到,和memcache協(xié)議基本一致,只是把key name換成queue name,而且在set的命令中,忽略了expire_time的參數(shù)。畢竟mq的數(shù)據(jù)存儲是存在berkeleyDB中,做了持久化存儲,沒有內(nèi)存的過期時(shí)間。
當(dāng)使用set命令時(shí),就向指定的消息隊(duì)列中寫入了一條新消息,也就是向BerkeleyDB中新insert了一條數(shù)據(jù),當(dāng)使用get命令時(shí),就從 指定隊(duì)列中取出一條新消息,也就是向BerkeleyDB中delete了一條數(shù)據(jù)。當(dāng)使用stats查看一個(gè)指定隊(duì)列時(shí),可以看到這個(gè)隊(duì)列一共接收了多 少消息,其中被取出了多少條。
示例:


復(fù)制代碼 代碼如下:


fengbo@onlinegame-10-121:~$ telnet 127.0.0.1 22202
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]'.
set q4 0 0 5
hello
STORED
set q4 0 0 5
world
STORED
stats queue
STAT q4 2/0
END
get q4
VALUE q4 0 5
hello
END
stats queue
STAT q4 2/1
END



上面執(zhí)行了兩次set的命令,使用stats queue查看時(shí),可以看到q4的隊(duì)列中共有消息2條,已取出0條;當(dāng)使用get取出第一條后,再此使用stats queue查看,q4中消息有2條,其中已取出1條。
PHP測試:


復(fù)制代碼 代碼如下:


session_start();
$memcache_obj = new Memcache;
$memcache_obj->connect(‘127.0.0.1′, 11212) or die (“error”);
memcache_set($memcache_obj, ‘k',10, 0, 0);
echo “queue”.memcache_get($memcache_obj, ‘k');
memcache_close($memcache_obj);



注釋:
這個(gè)時(shí)候會(huì)出現(xiàn)這樣的問題
memcacheq: error while loading shared libraries: libdb-5.0.so: cannot open shared object file: No such file or directory
解決辦法:在/usr/lib 下建個(gè) libdb-5.0.so 軟鏈就OK啦
ln -s /usr/local/BerkeleyDB.5.0/lib/libdb-5.0.so /usr/lib/

五,關(guān)閉memcacheQ
使用ps命令查查memcacheQ的進(jìn)程:ps -ef|grep wuf,然后直接將進(jìn)程kill掉.


關(guān)于如何在linux環(huán)境中安裝memcacheq問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

網(wǎng)站標(biāo)題:如何在linux環(huán)境中安裝memcacheq-創(chuàng)新互聯(lián)
當(dāng)前地址:http://bm7419.com/article10/cdgddo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、電子商務(wù)、網(wǎng)站策劃、網(wǎng)站排名、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)