redis, kyototycoon, memcacheの速度比較
redis, kyototycoon, memcache の速度を検証したみた。
redis はデフォルト設定のまま非同期ディスク書き込みです。
kyototycoon は以前にブログに記載した memcached plugin をONにして検証しています。
今回使ったサーバスペックはこちら。
CPU | Intel(R) Xeon(R) CPU X3353 @ 2.66GHz (2 core) |
メモリ | 5993 MB |
HDD | 386 G |
OS | CentOS release 6.4 |
速度比較方法として、set, get, delete をそれぞれ100000回繰り返して
時間を測定してみました。
set
redis | kyototycoon | memcache | |
1回目 | 4.806134939 | 8.653364897 | 4.90881896 |
2回目 | 4.698001862 | 9.185384035 | 4.805595875 |
3回目 | 4.805799961 | 10.79264808 | 4.788790941 |
速度順:redis ≒ memcache > kyototycoon
get
redis | kyototycoon | memcache | |
1回目 | 5.041815996 | 9.39627099 | 4.501425982 |
2回目 | 5.034805059 | 9.86879015 | 4.534216166 |
3回目 | 5.085501909 | 9.124469042 | 4.482938051 |
速度順:memcache > redis > kyototycoon
delete
redis | kyototycoon | memcache | |
1回目 | 4.686045885 | 7.526252031 | 3.93459487 |
2回目 | 4.507641792 | 6.271402121 | 3.698310137 |
3回目 | 4.481452942 | 7.489821196 | 3.71783185 |
速度順:memcache > redis > kyototycoon
まとめ
やはり memcache が最速でしたが、redis もそれなりに速度がでました。
kyototycoonは毎回ディスクに書き込み永続性を担保していますが
redisはメモリ上のデータが一定量更新されると非同期でディスクに書き込みます。
それぞれメリット、デメリットがあるので、使用する場面によって使い分けるのが良いかなと。
locateのインストール
CentOS6.4にlocateコマンドをインストールしたのでメモ。
locateとは
ファイルを高速に検索できる。あらかじめ作成したデータベースを使って検索するため、findコマンドより高速に検索が行える。データベースはスーパーユーザー権限でupdatedbコマンドを実行して作成する。
yumからインストール
yum -y install mlocate
使用方法
locate file_name
上記コマンドを実行したところ、下記エラーが
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
updatedbしていなかったのが、原因でした。
updatedbしたところ正常に実行できました!
KyotoTycoon[memcached plugin]インストール
CentOS6.4にKyotoTycoonのmemcached pluginをインストールしてみた。
Kyototycoonとは
KyotoTycoonはプロセス組み込み軽量データベースライブラリであるKyoto Cabinetをネットワーク越しに利用出来るようにするKVSのサーバ。同じKVSで有名なmemcachedの場合データベースを全てオンメモリで処理しているため電源を落としたりプロセスを再起動させると保存していたデータが全部初期化されてしまう特徴がある。 KyotoTycoonはファイルにデータを書き込み永続的なデータ保存ができる「memcachedのデータ永続化版」の特徴を持っています。 データベースのホットバックアップやレプリケーションも出来るため耐障害性能のあるKVSとして利用価値があります。
KyotoCabinetインストール
yum install lzo-devel lzma-devel xz-devel curl -L -o kyotocabinet-1.2.72.tar.gz http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.72.tar.gz tar zxfv kyotocabinet-1.2.72.tar.gz cd kyotocabinet-1.2.72 ./configure --prefix=/usr/local/kyotocabinet --enable-lzo --enable-lzma make make install echo /usr/local/kyotocabinet/lib > /etc/ld.so.conf.d/kyotocabinet.conf ldconfig
KyotoTycoonインストール
yum install lua-devel.x86_64 wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.53.tar.gz tar zxfv kyototycoon-0.9.53.tar.gz cd kyototycoon-0.9.53 ./configure --prefix=/usr/local/kyototycoon --with-kc=/usr/local/kyotocabinet --enable-lua make make install echo /usr/local/kyototycoon/lib > /etc/ld.so.conf.d/kyototycoon.conf ldconfig
起動コマンド(memcached puluginを有効)
/usr/local/kyototycoon/bin/ktserver -port 10001 -tout 10 -th 16 -log /var/kt/log/test_master.log -ls -ulog /var/kt/log/test_ulog -ulim 256m -sid 1 -pid /var/kt/log/test_master.pid -cmd /var/kt/bin -plsv /usr/local/kyototycoon/libexec/ktplugservmemc.so -plex port=11311#opts=f#tout=10 /var/kt/db/test_master.kch#opts=l#bnum=1000000#msiz=1g#dfunit=8
起動に関しては
/usr/local/src/kyototycoon-0.9.53/lab/ktservctl
をコピーして起動するか、daemontoolsを使うのがよさそう。
phpredisインストール
前回のブログ(Redisインストール)ではRedisのインストールについて書きましたが、今回はPHPから利用するためphpredisライブラリーをインストール
gitからソースを入手してインストール
git clone https://github.com/nicolasff/phpredis.git phpize ./configure make make test make install
extensionの追加
vi php.ini +extension=redis.so
簡単なテストコードで接続確認
<? $redis = new Redis(); $redis->pconnect('127.0.0.1', 6379); $key = 'hello'; $val = 'world'; $redis->set($key, $val); echo $redis->get($key) . "\n"; ?>
以上です。
Redisインストール
Redis 2.6.12インストール
最新版のソースからインストール
wget https://redis.googlecode.com/files/redis-2.6.12.tar.gz tar zxfv redis-2.6.12.tar.gz cd redis-2.6.12 make make test
make testでtcl 8.5が必要とエラー
cd src && make test make[1]: Entering directory `/usr/local/src/redis-2.6.12/src' You need tcl 8.5 or newer in order to run the Redis test make[1]: *** [test] Error 1 make[1]: Leaving directory `/usr/local/src/redis-2.6.12/src' make: *** [test] Error 2
tcl 8.5インストールをインストール
wget http://prdownloads.sourceforge.net/tcl/tcl8.5.13-src.tar.gz tar xzvf tcl8.5.13-src.tar.gz cd tcl5.8.13/unix ./configure make make test make install
再度make testしてみる。
問題なかったのでmake install!!
make test make install which redis-server
これでインストール完了。
次は起動スクリプトの設定。install_server.shが用意されているので実行。
cd util ./install_server.sh
問題なく実行されたが、init.dの起動スクリプトの改行がおかしかったので修正。
vim /etc/init.d/redis_6379 %s/\\n/\r/g
起動してみる
/etc/init.d/redis_6379 start
最後にredis-cliコマンドで簡単な接続確認
redis-cli redis 127.0.0.1:6379> set hoge foo OK redis 127.0.0.1:6379> get hoge foo
これでインストールと起動まで完了。
次はPHPから利用する為に、phpredisを入れてみよう。