Memcachedでアプリケーションを高速化する
Memcachedとは
Webアプリケーションのレスポンスを高速化するために、メモリ上にキャッシュデータを配置するソフトウェア。主にRDBMSの負荷対策に使用されている。
libevent(イベント通知API)のバージョン確認
1 2 |
rpm -q libevent libevent-1.4.13-4.el6.x86_64 |
インストール方法
1 |
yum install -y memcached |
実行ログ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
[root@www11440uf ~]# yum install -y memcached Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile epel/metalink | 5.9 kB 00:00 * base: ftp.nara.wide.ad.jp * epel: ftp.kddilabs.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp base | 3.7 kB 00:00 epel | 4.2 kB 00:00 http://ftp.kddilabs.jp/Linux/packages/fedora/epel/6/x86_64/repodata/repomd.xml: [Errno -1] repomd.xml does not match metalink for epel Trying other mirror. epel | 4.2 kB 00:00 epel/primary_db | 5.4 MB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package memcached.x86_64 0:1.4.4-3.el6 will be installed --> Processing Dependency: libevent-1.4.so.2()(64bit) for package: memcached-1.4.4-3.el6.x86_64 --> Running transaction check ---> Package libevent.x86_64 0:1.4.13-4.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: memcached x86_64 1.4.4-3.el6 base 68 k Installing for dependencies: libevent x86_64 1.4.13-4.el6 base 66 k Transaction Summary ================================================================================ Install 2 Package(s) Total download size: 134 k Installed size: 374 k Downloading Packages: (1/2): libevent-1.4.13-4.el6.x86_64.rpm | 66 kB 00:00 (2/2): memcached-1.4.4-3.el6.x86_64.rpm | 68 kB 00:00 -------------------------------------------------------------------------------- Total 1.1 MB/s | 134 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : libevent-1.4.13-4.el6.x86_64 1/2 Installing : memcached-1.4.4-3.el6.x86_64 2/2 Verifying : libevent-1.4.13-4.el6.x86_64 1/2 Verifying : memcached-1.4.4-3.el6.x86_64 2/2 Installed: memcached.x86_64 0:1.4.4-3.el6 Dependency Installed: libevent.x86_64 0:1.4.13-4.el6 |
ソースを持ってきてコンパイルするならこちら
1 2 3 4 5 6 7 |
# cd /usr/local/src # wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz # tar xvfz memcached-1.4.5.tar.gz # cd memcached-1.4.5 # ./configure --with-libevent=/usr/local/libevent/ # make # make install |
自動起動の設定
1 2 3 |
chkconfig --add memcached chkconfig --list | grep mem memcached 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
telnetでの操作
telnetでmemcachedに接続する。
1 |
telnet localhost 11211 |
ステータスの確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
stats 30: Client using the ascii protocol <30 stats STAT pid 1423 STAT uptime 83 STAT time 1378438807 STAT version 1.4.15 STAT libevent 1.4.13-stable STAT pointer_size 64 STAT rusage_user 0.001999 STAT rusage_system 0.000999 STAT curr_connections 10 STAT total_connections 11 STAT connection_structures 11 STAT reserved_fds 20 STAT cmd_get 0 STAT cmd_set 0 STAT cmd_flush 0 STAT cmd_touch 0 STAT get_hits 0 STAT get_misses 0 STAT delete_misses 0 STAT delete_hits 0 STAT incr_misses 0 STAT incr_hits 0 STAT decr_misses 0 STAT decr_hits 0 STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT touch_hits 0 STAT touch_misses 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 7 STAT bytes_written 0 STAT limit_maxbytes 67108864 STAT accepting_conns 1 STAT listen_disabled_num 0 STAT threads 4 STAT conn_yields 0 STAT hash_power_level 16 STAT hash_bytes 524288 STAT hash_is_expanding 0 STAT bytes 0 STAT curr_items 0 STAT total_items 0 STAT expired_unfetched 0 STAT evicted_unfetched 0 STAT evictions 0 STAT reclaimed 0 END |
データの設定
「test」キーの中にフラグ0、期限無期限(=0)で8バイトのデータを格納するよう設定し、 次に8バイトのデータ「TESTDATA」を入力した。
1 2 3 4 5 |
set test 0 0 8 <30 set test 0 0 8 TESTDATA >30 STORED STORED |
データの取得
「test」キーに該当するデータを取得する。
1 2 3 4 5 6 7 8 9 |
get test <30 get test >30 sending key testd 0 8 TESTDATA T >30 END VALUE test 0 8 TESTDATA END |
データの追加
addコマンドは既にデータが格納されている場合は上書き処理を実施しない。
1 2 3 4 5 |
add test 0 0 5 <30 add test 0 0 5 TESTN >30 NOT_STORED NOT_STORED |
PHP::Memcached
インストール
phpizeとzlibが必要
1 |
yum install -y zlib-devel phpize-devel |
1 2 3 4 5 6 |
wget http://pecl.php.net/get/memcached3.0.8.tgz tar -xzvf memcached3.0.8.tgz cd memcached3.0.8 ./configure make make install |
Moduleディレクトリにmemcached.soがあれば成功、Moduleディレクトリは以下のコマンドで検索可能。
1 |
php-config --extension-dir |
/etc/php.iniに下記を追加する。
1 |
extension=memcache.so |