memcacheQ 是基於 memcache 協定的**持久化分散式訊息佇列**,底層儲存引擎為 **BerkeleyDB**,事件驅動用 **libevent**,無過期機制,資料落地持久化。
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
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
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
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
| 特性 | memcached | memcacheQ |
|---|---|---|
| 儲存引擎 | 記憶體 | BerkeleyDB (磁碟) |
| 持久化 | 否 | 是 |
| 過期機制 | 有 | 無 |
| 協定 | memcache | memcache 子集 |
| 用途 | 快取 | 訊息佇列 |