idobata.io の Gemfile を眺めていて、「あーそういえば hiredis なんてのもあったなあ」と思い出したので、実際にどれくらい早くなるのかベンチ取ってみた。hiredis は law-level な API を使ってるから早い、ということらしいよ。
require 'benchmark'
require 'redis'
n = 100_000
Benchmark.bm do |x|
x.report {
redis = Redis.new
n.times {
redis.set("mykey", "hello world")
redis.get("mykey")
}
}
x.report {
require 'hiredis'
require 'redis/connection/hiredis'
redis = Redis.new
n.times {
redis.set("mykey", "hello world")
redis.get("mykey")
}
}
end
こういう単純な set/get を繰り替えす奴で検証.
% ruby -v redis-bench.rb
ruby 2.2.0dev (2014-06-05 trunk 46357) [x86_64-darwin13]
user system total real
11.190000 5.160000 16.350000 ( 21.709006)
4.740000 4.180000 8.920000 ( 16.542826)
うん、確かに hiredis の方が早いみたい。積極的に使ってよさそう。