CentOS 5.3の32bit版にインストールしてみることにした。
■インストール
以下のコマンドでrpmからインストールできる。
wget http://c2978342.ltd.cloudfiles.rackspacecloud.com/membase-server-community_x86_1.6.4.rpm --referer="http://www.membase.org/downloads" rpm -ivh membase-server-community_x86_1.6.4.rpm
ダウンロードサイトの仕様上、wgetにリファラーをつけた。インストールが完了すると以下のメッセージが表示される。
Starting Membase server[ OK ] You have successfully installed Membase Server. Please browse to http://localhost.localdomain:8091/ to configure your server. Please refer to http://membase.com and http://membase.org for additional resources. Please note that you have to update your firewall configuration to allow connections to the following ports: 11211, 11210, 4369, 8091 and from 21100 to 21199. By using this software you agree to the End User License Agreement. See /opt/membase/LICENSE.txt.
■設定
ブラウザから設定ができるらしいので、以下のコマンドでポート8091番を開ける。ついでに上述のメッセージに従って、11211番、11210番、4369番も同様に対処しておく。
system-config-securitylevel-tui
http://localhost:8091/にアクセスすると悪そうな顔したキャラが表示されるはずだ。後は画面の指示に従えば良い。
■ベンチマーク
上手く書き込みできるかを検証するついでにベンチマークしてみる。
$memcache = new Memcache(); $memcache->connect('localhost', 11211); $start = microtime(true); for($i = 0; $i < 1000; $i++){ $memcache->set("k{$i}", "abcdefghijklmnopqrstuvwxyz"); } $end = microtime(true); print($end - $start);// 0.19418982505798
以前にmemcachedのベンチマークで使用したコードをそのまま使うことができるのが素晴らしい。
勝手評価
速度はmemcachedの2~3倍程度かかるようだが、他のKVSよりも数倍高速である。複雑な構造を必要とせずハッシュテーブルとして使用するだけならば、オススメできる気がする。
不具合:保存ができない
管理画面にアクセスし(http://localhost:8091/index.html#sec=monitor_buckets&zoom=zoom_minute)Data Bucket>Item Countを見ると0のままで保存がされていない。
原因
memcachedが既にポートを使っていた。
対策1
以下のコマンドでmemcachedをstopする。普通の人はこれで良いと思う。
/etc/init.d/memcached stop
対策2
以下のコマンドでmemcachedをアンインストールする。membaseがあればmemcachedは要らないってこともあり得る。
yum remove memcached
確認
以下のコマンドで確認すると良いかもしれない。
lsof -i:11211
悪い例
memcachedがポートを使っている。
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME memcached 2500 memcached 26u IPv6 8072 TCP *:11211 (LISTEN) memcached 2500 memcached 27u IPv4 8073 TCP *:11211 (LISTEN) memcached 2500 memcached 28u IPv6 8077 UDP *:11211 memcached 2500 memcached 29u IPv4 8078 UDP *:11211
良い例
membaseがポートを使っている。
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME moxi 6481 membase 40u IPv6 38065 TCP *:11211 (LISTEN) moxi 6481 membase 41u IPv4 38066 TCP *:11211 (LISTEN)
■特性
「memcached互換のNoSQLデータベース「Membase」がオープンソースで登場」を参考のこと。デフォルトでGUI管理ってのはなかなか頑張ってるよね。