MemcacheQインストールと使用


MemcacheQはMemcacheDBに基づくメッセージキューサーバです.公式サイトのアドレス:http://memcachedb.org/memcacheq/
特徴:
1.簡単で使いやすい
2.処理速度が速い.
3.複数のキューを作成できます.
4.同時性が高い.
5.memcacheプロトコルと互換性があります.
MemcacheQはBerkeley DBとlibevent(1.4以上)に依存する.
Berkeley DBは、MemcacheQが崩壊した時やサーバーがフリーズした時にデータが失われないようにキューデータを恒久化するために使用される.
1.Berkeley DBの取り付け
ダウンロード先:http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html?ssSourceSiteId=ocomcn
$tar xvzf db-6.0.20.tar.gz
$cd db-6.0.20/
$cd build_unix/
$../dist/configure
$make
$sudo make install
2.libeventの設置
ダウンロード先:http://libevent.org/
$tar xvzf libevent-2.0.21-stable.tar.gz
$cd libevent-2.0.21-stable
$./configure
$make
$sudo make install
二行を追加します.
/usr/local/lib
/usr/local/BerkeleyDB.6.0/lib
運転コマンドの更新が追加されました.
sudo ldconfig
3.MemcacheQをインストールする
ダウンロード先:https://code.google.com/p/memcacheq/downloads/list
libdb.soソフトリンクを作成します.
ln -s /usr/local/BerkeleyDB.6.0/lib/libdb-6.0.so /usr/lib/libdb.so
$tar xvzf memcacheq-0.2.x.tar.gz
$cd memcacheq-0.2.x
$./configure --with-bdb=/usr/local/BerkeleyDB.6.0 --with--libevent=/usr/lib --enable-threads
$make
$sudo make install
--with-bdb=/usr/local/Berkeley DB.6.0指定Berkeley DBパス
--with-libevent=/usr/lib指定libeventパス
--enaber-threadsマルチスレッドを開く
4.運転と使用
パラメータリスト:
-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)
--------------------BerkeleyDB Options-------------------------------
-m <num>      BerkeleyDB      , default is 64MB
-A <num>            , default is 4096, (512B ~ 64KB, power-of-two)
-H <dir>            , default is '/data1/memcacheq'
-L <num>             , 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>                   , default is 60%
-E <num>           DB      , default is 16*1024, 0 for disable
-B <num>              ,    , default is 1024
-D <num>                 (deadlock detecting), 0 for disable, default is 100ms
-N              DB_TXN_NOSYNC         , default is off
-R                         , default is off
MemcacheQを起動します
memcacheq -d -r -H /data1/memcacheq -N -R -v -L 1024 -B 1024 > /data1/mq_error.log 2>&1
memcacheq -h       
<?php
/*   memcacheq server */
$memcache_obj = new Memcache();
$memcache_obj->connect('localhost', 22201); // default port 22201

/*       */
$memcache_obj->set('demoqueue1', 'message body here1', MEMCACHE_COMPRESSED, 0);
$memcache_obj->set('demoqueue1', 'message body here2', MEMCACHE_COMPRESSED, 0);
$memcache_obj->set('demoqueue1', 'message body here3', MEMCACHE_COMPRESSED, 0);
$memcache_obj->set('demoqueue1', 'message body here4', MEMCACHE_COMPRESSED, 0);

/*      */
echo $memcache_obj->get('demoqueue1').'<br>';
echo $memcache_obj->get('demoqueue1').'<br>';
echo $memcache_obj->get('demoqueue1').'<br>';
echo $memcache_obj->get('demoqueue1').'<br>';

$memcache_obj->close();
?>