キモブロ

Please spy check please, Fucking retard

Procの実行結果を一定期間キャッシュしてくれるproc-cache便利

俺の前に作ったproc-cacheというモジュールを最近また使い始めてるけどまじで便利や。retry-handlerぐらい便利だな。
https://github.com/kimoto/proc-cache


これはProcの実行結果を一定期間キャッシュしてくれるというもの。なんていうかわかりやすいんだよね。コードとしてみた時に。

require 'proc-cache'
# 1回目の実行。これはキャッシュされないので3秒後に"heavy task"とコンソールに出力される
puts proc{ sleep 3; "heavy task" }.cache!
  => "heavy task" # 3秒後に"heavy task"という文字列が戻ってくる

# 2回目の実行。これはキャッシュされるのでただちに"heavy task"とコンソールに出力される
puts proc{ sleep 3; "heavy task" }.cache!
   => "heavy task" # ただちに"heavy task"という文字列が戻ってくる


もちろんキャッシュの時間を指定したりとか、キャッシュファイルの場所を変更できる

# 2時間経過するまでキャッシュを使う
{...}.cache! :expires => 2.hours, :cache_path => '/tmp/test.cache' 

ファイルシステム上にキャッシュさせる部分がいけてないけど、でも最近のさくらVPSだと、/dev/shm がデフォルトで用意されてて、これはオンメモリなファイルシステムなので、きわめて高速。だからproc-cacheと相性がよい。:cache_path => '/dev/shm/pageviews.cache' みたいな感じで運用してる

サイドバーのページビューとかもこれつかって30分ぐらい手軽にキャッシュさせてる。これをmemcachedに対応させたらさらに高速になるし便利っぽいなぁ。Proc::Cache::Store = :memcached みたいに変更出来るようにするかー。