MySQL の InnoDB ストレージエンジンに直接 memcached プロトコルで高速にアクセスするためのプラグインが存在します。仕組みはこちらで紹介した MySQL HandlerSocket Plugin と似ています。図解した公式ページはこちらです。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 のプラグインディレクトリ内にビルドされます。
プラグインの設定テーブルなどを作成する 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 127.0.0.1 11211
set hello 0 0 8
12341234
STORED
get hello
VALUE hello 0 8
12341234
END
quit
インストール
$ 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