性能の壁にぶつかったとき、SQLの改善では満足できないと、
ついついキャッシュに頼りたくなりますよね。

まるで酒に依存する亭主のよう。
「え~い、キャッシュだ!キャッシュ!memcachedもってこ~い!!」
なんてやりとりがあったりなかったり。

というわけで、亭主の暴力に耐えながらmemcachedを始めるわけです。あれ?なんか違うか。
今回はとりあえずインストールをしますよ。

インストール

参考URL(※後述)によると、libeventmemcachedをmake installすれば良いらしいっス。

ファイルはこれ使います。
http://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz
http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz

# cd /usr/local/src
# wget --no-check-certificate http://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz
# tar zxvf libevent-2.0.20-stable.tar.gz
# cd libevent-2.0.20-stable
# ./configure
# make
# make install

memcachedにはlibeventってのが必要らしいのでまずこれを入れます。

# cd /usr/local/src
# wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
# tar zxvf memcached-1.4.15.tar.gz
# cd memcached-1.4.15
# ./configure
# make
# make install

つぎにmemcachedいれました。

# cp /usr/local/src/memcached-1.4.15/script/memcached.sysv /etc/rc.d/init.d/memcached
# chkconfig --add memcached
# chkconfig --list memcached

起動スクリプトの設定だそうです。(よくわかってない)

# /etc/rc.d/init.d/memcached start
memcached を起動中: chown: cannot access `/var/run/memcached': そのようなファイルやディレクトリはありません
/bin/bash: memcached: command not found
                                                           [失敗]
# mkdir /var/run/memcached

起動してみたらエラー。

無いと言われたディレクトリを作ってあげます。

# memcached
memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
# echo "/usr/local/lib/" > /etc/ld.so.conf.d/libevent.conf
# ldconfig

試しに実行してみるもエラー。

ldconfigする(共有ライブラリを認識させる)必要があるらしいです。

# /etc/rc.d/init.d/memcached start
memcached を起動中: /bin/bash: memcached: command not found
                                                           [失敗]

まだ失敗する。そんなコマンドないよって?

# which memcached
/usr/local/bin/memcached

あるっぽいけど。。。

よくわからなかったので、起動スクリプトを編集してみた。

vi /etc/rc.d/init.d/memcached
daemon memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS

daemon /usr/local/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS
# /etc/rc.d/init.d/memcached start
memcached を起動中:                                        [  OK  ]

動いた!

# telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
stats
STAT pid 26309
STAT uptime 76
STAT time 1352468374
STAT version 1.4.15
STAT libevent 2.0.20-stable
STAT pointer_size 64
STAT rusage_user 0.000000
STAT rusage_system 0.003999
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
^]
telnet> quit
Connection closed.

動いたよー!!よっしゃー!!!!

続きはまた次回。

memcachedインストール参考URL: