MySQL の InnoDB ストレージエンジンに直接 memcached プロトコルで高速にアクセスするためのプラグインが存在します。仕組みは MySQL HandlerSocket Plugin と似ています。図解した公式ページはこちらです。MySQL 5.6 を対象として簡単に使い方をまとめます。
参考ページ
MySQL 5.6 のビルド
ソースコードから MySQL 5.6 をインストールします。ただし、今回は WITH_INNODB_MEMCACHED を ON にセットしてビルドする必要があることに注意してください。
# cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.25 \
-DDEFAULT_CHARSET=utf8 \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_PIC=1 \
-DWITH_INNODB_MEMCACHED=ON ←これが必要であることに注意
このオプションによって動的リンク用の Shared Library が MySQL のプラグインディレクトリ内にビルドされます。
- libmemcached.so: the memcached daemon plugin to MySQL.
- innodb_engine.so: an InnoDB API plugin to memcached.
Memcached プラグインの有効化
プラグインの設定テーブルなどを作成する SQL スクリプトを実行します。付随して test という名称のデータベースにサンプルが生成されますので、削除してしまった場合には再作成しておきます。
mysql> create database if not exists test;
mysql> source /usr/local/mysql-5.6.25/share/innodb_memcached_config.sql
プラグインをインストールします。
mysql> install plugin daemon_memcached soname "libmemcached.so";
ちなみに、アンインストールするためには以下のコマンドを実行します。
mysql> uninstall plugin daemon_memcached;
動作検証
telnet
$ telnet 127.0.0.1 11211
set hello 0 0 8
12341234
STORED
get hello
VALUE hello 0 8
12341234
END
quit
memcached クライアントコマンド
インストール
$ sudo yum install libmemcached
$ export MEMCACHED_SERVERS=127.0.0.1:11211
読み出し
$ memcat AA
HELLO, HELLO
削除
$ memrm AA
現在のアイテム数などを含むサーバ情報を確認
$ memstat
テキストの内容を書き込み
$ echo '123' > /tmp/123.txt
$ memcp /tmp/123.txt
$ memcat 123.txt
123
全削除
$ memflush
MySQLの運用やレプリケーション設定など、実用的なノウハウを共有します。
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。


