ActiveSupport::Cacheを簡易KVSとして使う
KVS的なものを使いたいんだけどmemcachedを立てるほどではないって事ありますよね?
そんなときはRailsのフラグメントキャッシュで使われてるActiveSupport::Cacheでファイルストレージを使ってみてはどうでしょうか?
require 'rubygems' require 'active_support' include ActiveSupport::Cache fs = ActiveSupport::Cache.lookup_store(:file_store, "tmp") # tmpディレクトリを格納先に指定 fs.write("key123","value123") #Stringを保存 fs.write("key456",{:hoge => "fuga"}) #Hashを保存 p fs.read("key123") # "value123" p fs.read("key456") # {:hoge=>"fuga"}
ちなみにtmpディレクトリ以下はこんな感じにサブディレクトリが作成されています。
$ tree tmp tmp ├── 1E0 │ └── 8F0 │ └── key123 └── 1E9 └── A10 └── key456 4 directories, 2 files
同一ディレクトリに大量のファイルを置くとアクセス速度が低下してしまうのですが、それを防止するためにサブディレクトリを作ってるのかな?
keyを探したりワークディレクトリをクリアしたり、詳しい情報はこちらのドキュメントを御覧ください。
http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html