5月 082012
tmp_cacheというgemを作った。
■インストール
gem install tmp_cache
■使い方
cacheなので、memcacheのように有効期限を指定できる。
60秒間生きるキャッシュの場合、61秒後はnilになる
#!/usr/bin/env rubyTmpCacheはグローバルにどこからでも読めるので便利
require 'rubygems'
require 'tmp_cache'
TmpCache.set('name', 'shokai', 60) # expire 60 sec
puts TmpCache.get('name') # => 'shokai'
sleep 61
puts TmpCache.get('name') # => nil
■利用例
skype-chat-gatewayや、Herokuで秋月電子のRSSを作るで使ってる。
skype-chat-gatewayにHTTPアクセスがあるたびに、何百回もAppleScriptを呼び出してSkype.appと通信させるとひどいことになるのでcacheさせている。
秋月のほうも、新着商品の個別ページ100個以上を見に行っているのでcacheを使わなければ大迷惑になってしまう。
Herokuは無料でmemcachedが使えるけどそれだけの為に(無料なのに)クレジットカードを登録するの嫌だし。
例えば、webページを読みに行くのを1200秒cacheする場合はこんなふうにする。
#/usr/bin/env ruby
require 'rubygems'
require 'open-uri'
require 'tmp_cache'
def get_page(url, expire=1200)
TmpCache.get(url) || TmpCache.set(url, open(url).read, expire)
end
url = 'http://shokai.org'
puts get_page(url)
puts get_page(url) # 2回目はcacheから読まれる