Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

memcacheq 訊息佇列服務安裝與原理解析

編輯:Linux 教學

定位

memcacheQ 是基於 memcache 協定的**持久化分散式訊息佇列**,底層儲存引擎為 **BerkeleyDB**,事件驅動用 **libevent**,無過期機制,資料落地持久化。

依賴安裝

1. BerkeleyDB


wget https://download.oracle.com/berkeley-db/db-5.0.21.tar.gz
tar zxf db-5.0.21.tar.gz
cd db-5.0.21/build_unix
../dist/configure
make && sudo make install

2. libevent (≥ 1.4.x)


wget https://monkey.org/~provos/libevent-1.4.12-stable.tar.gz
tar zxf libevent-1.4.12-stable.tar.gz
cd libevent-1.4.12-stable
./configure && make && make install

3. memcacheQ


wget https://code.google.com/p/memcacheq/downloads/list
tar zxf memcacheq-x.x.x.tar.gz
cd memcacheq-x.x.x
./configure --with-bdb=/usr/local/BerkeleyDB.5.0 --with-libevent=/usr/local/lib --enable-threads
make && sudo make install

啟動參數


memcacheq -h   # 查看選項
memcacheq -d -r -H /data1/memcacheq -N -R -v -L 1024 -B 1024 > /data1/mq_error.log 2>&1
  • -d:背景執行
  • -r:啟用備份
  • -H:資料目錄
  • -N:不壓縮
  • -R:啟用複製
  • -L 1024:最大佇列數
  • -B 1024:單則訊息 Body 上限 1024 bytes

協定操作(與 memcache 高度相容)

寫入佇列


set <queue_name> <flags> 0 <msg_len>\r\n
<message_body>\r\n
STORED\r\n

忽略 expire_time,資料持久化不會過期。

讀取佇列


get <queue_name>\r\n
VALUE <queue_name> <flags> <msg_len>\r\n
<message_body>\r\n
END\r\n

get 即刪除:讀取後該訊息從 BerkeleyDB 移除。

統計指令


stats queue
# 回傳:STAT q4 2/1  (總接收 2,已取出 1)

實測範例


telnet 127.0.0.1 22202
set q4 0 0 5
hello
STORED
set q4 0 0 5
world
STORED
stats queue
STAT q4 2/0
get q4
VALUE q4 0 5
hello
END
stats queue
STAT q4 2/1

核心差異總結

特性memcachedmemcacheQ
儲存引擎記憶體BerkeleyDB (磁碟)
持久化否是
過期機制有無
協定memcachememcache 子集
用途快取訊息佇列
Copyright © Windows教程網 All Rights Reserved