カテゴリー Home > kvs > memcached vs TokyoCabinet vs TokyoTyrant vs Redis

memcached vs TokyoCabinet vs TokyoTyrant vs Redis

  • ( 27 )
  • ( 0 )
  • ( 3 )
  •  2010/06/13 (Sun)

NoSQLの話題が周りで盛り上がっているので、有名どころのライブラリのset/getのベンチマークを取ってみることにしました。対象はmemcached, TokyoCabinet, TokyoTyrant, Redisの4種類。gemで入れたruby用のバインディングを利用して1000件のデータをset, getしています。結果はこんなかんじ。

  user system total real
memcached:set0.1200000.0300000.150000( 0.213069)
memcached:get0.1500000.0300000.180000( 0.238989)
TokyoCabinet:set0.0000000.0000000.000000( 0.002802)
TokyoCabinet:get0.0000000.0000000.000000( 0.001759)
TokyoTyrant:set0.0100000.0000000.010000( 0.005384)
TokyoTyrant:get0.0300000.0000000.030000( 0.038285)
Redis:set0.0400000.0300000.070000( 0.147060)
Redis:get0.0400000.0200000.060000( 0.151168)

当然のごとくmemcachedが最速だろう。。。と思いきや、そうでもない結果に。むしろ一番遅い結果に。なんだこれーーーと思って調べ続けていたのですが、バインディングのgemのコードを追いかけるかぎり、どうもこれはmemcache-clientの実装が原因のよう。

これは、memcache-clientの実装はpure-rubyで実装されているのに対して、TokyoCabinet/TokyoTyrantのバインディングの実装はnativeコードで実装されてあるのが原因のようです。事実、TokyoTyrantはmemcacheプロトコルを実装しているので、memcache-clientを利用してTokyoTyrantにアクセスすると両者はこんな結果になりました。

  user system total real
memcache:set0.1200000.0400000.160000( 0.189803)
memcache:get0.1500000.0300000.180000( 0.240141)
TokyoTyrant:set0.1300000.0300000.160000( 0.238009)
TokyoTyrant:get0.1300000.0200000.150000( 0.271598)

TokyoTyrantのアクセス速度は一気に遅くなりました。やっぱりRuby実装に引きづられているみたいですね。。

ちなみに、Redisもsetに限るとmemcacheプロトコルと同じプロトコルを利用できるので、そのベンチをとってみると

  user system total real
Redis:set0.0400000.0100000.050000( 0.091300)

と、なってmemcacheクライアントを利用したときのmemcached, TokyoTyrantと比較しても圧倒的に高速だということがわかりました(おもしろい!)

まとめ

  • オンメモリだからmemcachedが高速、とは限らない
  • memcache-clientは遅いので注意
  • 各ライブラリのオリジナルのバインディングを利用した場合、高速順に並び替えるとTokyoCabinet, TokyoTyrant, Redis, memcachedになる

と、いうわけで、memcachedが高速なことを確認するためにベンチマーク取ってみたのですが、実装によってはまったく異なる結果になることが分かって、なかなかおもしろかったです。なお、今回利用したコードはgistに掲載しています。

 | 

Google Adsense

Social bookmark comment : 0

No comment.

Comment : 0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info
           

Trackback : 0

TrackBack URL for this entry
http://blog.katsuma.tv/mt-tb.cgi/223
Listed below are links to weblogs that reference
memcached vs TokyoCabinet vs TokyoTyrant vs Redis from blog.katsuma.tv

Home > kvs > memcached vs TokyoCabinet vs TokyoTyrant vs Redis

Search
Feeds
Google Adsense

Page Top