オンメモリKVS のmemcached の使い方
memcached とは?
- 分散メモリキャッシュシステム (Distributed Memory object Caching System)
- レコード (value) とキー (key) のペアをメモリ上で管理
- メモリを超えるとLRU (Least Recently Used) に従って古いデータが消える
- シンプルなテキストプロトコル
- サーバ側ではなく,クライアント側で分散を行う
- memcached 自体に分散機能は実装されていない
memcached のインストール
memcached は libev ではなく libevent を使っているらしい。
sudo apt-get install libevent1 libevent-dev
libevent を入れた後,memcached をインストールする。
wget http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
tar zxvf memcached-1.2.6.tar.gz
cd memcached-1.2.6
./configure
make
sudo make install
gcc 関連のエラー対処
gcc がインストールされていない場合、以下のようなエラーが出るので別途インストール (sudo apt-get install gcc
) をする。
checking build system type...
Invalid configuration `i686-pc-linux-oldld': machine `i686-pc-linux' not recognized
memcached の起動と使い方
memcached
コマンドのオプションは以下の通り。
- -u ユーザの指定
- -p ポートの指定 (デフォルト: 11211)
- -m 使用するメモリの容量[MB]
- -d バックグラウンド起動
フォアグラウンド
memcached -p 11211 -m 64 -vv
バックグラウンド (デーモン)
memcached -p 11211 -m 64 -d
接続 (telnet) テスト
telnet
コマンドで起動した memcached へ通信できるかテストする。
$ telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stats
STAT pid 16719
STAT uptime 15858
STAT time 1236271454
STAT version 1.2.6
STAT pointer_size 32
STAT rusage_user 0.000000
STAT rusage_system 1.570000
STAT curr_items 1
STAT total_items 3
STAT bytes 63
STAT curr_connections 2
STAT total_connections 5
STAT connection_structures 3
STAT cmd_get 3
STAT cmd_set 5
STAT get_hits 3
STAT get_misses 0
STAT evictions 0
STAT bytes_read 230
STAT bytes_written 693
STAT limit_maxbytes 67108864
STAT threads 1
END
quit
Connection closed by foreign host.
memcached 側の出力はこんな感じ。
$ memcached -p 11211 -m 64m -vv
<6 server listening
<7 send buffer was 110592, now 268435456
<7 server listening (udp)
<8 new client connection
<8 stats
>8 STAT pid 16719
STAT uptime 15858
STAT time 1236271454
STAT version 1.2.6
STAT pointer_size 32
STAT rusage_user 0.000000
STAT rusage_system 1.570000
STAT curr_items 1
STAT total_items 3
STAT bytes 63
STAT curr_connections 2
STAT total_connections 5
STAT connection_structures 3
STAT cmd_get 3
STAT cmd_set 5
STAT get_hits 3
STAT get_misses 0
STAT evictions 0
STAT bytes_read 230
STAT bytes_written 693
STAT limit_maxbytes 67108864
STAT threads 1
END
<8 quit
<8 connection closed.
memcached のコマンド
問い合わせの形式は以下の通り。
SET (保存)
set <key> <flags> <exptime> <bytes>
<data>
GET (取得)
get <key>
SET したデータを GET する例
$ telnet localhost 11211
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
set key 0 0 5
value
STORED
get key
VALUE key 0 5
value