Sinatraのパフォーマンスアップ作戦
自サービスを続々とSinatraってます。
その際、パフォーマンスアップを狙い、Memcached(+memcache-client)を利用した、Railsのフラグメントキャッシュライクに使えるExtensionを書きました。
使い方やコードはコチラにあります
http://github.com/gioext/sinatra-memcache/tree/master
使い方
# start memcached cd myapp git clone git://github.com/gioext/sinatra-memcache.git lib/sinatra-memcache
# app.rb require 'rubygems' require 'sinatra' require File.dirname(__FILE__) + '/lib/sinatra-memcache/lib/sinatra/memcache' # ページキャッシュのように使ったり get '/cache1' do cache 'cache1' do sleep(5) 'Hello Cache1' end end # 引数で有効時間や圧縮の設定したり get '/cache2' do cache 'cache2', :expiry => 10, :compress => true do sleep(3) 'Hello Cache2' end end # オブジェクトをキャッシュしたり get '/obj' do hash = cache 'obj' do sleep(2) { :a => 'Hello Object' } end hash[:a] end # キーや正規表現でキャッシュを消したり get '/expire' do expire 'cache1' expire /^cache/ expire // 'Hello Expire' end # デフォルトのオプション # 開発時はキャッシュ無効が吉 # configure :development do # set :cache_enable, false # end configure do set :cache_server, 'localhost:11211' set :cache_namespace, 'sinatra-memcache' set :cache_enable, true set :cache_logging, true end
試してないですがMemCache互換のAPIを持つTokyoTyrant等でも動くと信じてます
おしまい