2012-04-06 8 views
0

私は、select(つまりfind_by_name( 'bob')など)を使用して約100万回データベースを照会するプロジェクトに取り組んでいます。データセットが小さいので、結果をruby varにキャッシングし、Array.findを使用してオブジェクトを特定することを考えています。これは、DBを打つことを避けるだろうが、私は必要ない。 〜15k Rubyオブジェクトを格納するという考え方のように。他の考え?選択を避けるためにARオブジェクトをメモする

答えて

0

私は、memcachedとcache_fuでクエリ結果をキャッシュする方法を教えてくれる興味深いブログエントリを見つけました:Coding Block: Caching Active Record Models in Rails 3

私のアドバイスは、memcached(記事で説明したように)やRedisを使ってオブジェクトを保存し、必要に応じてそれらをキャッシュから取得することです。

+0

これはキャッシュするのに適しています。私はまだ、キャッシュされた値に対してArray findメソッドを使用する必要があると思います。 – tesserakt

+0

理想的には、Array.findを実行する必要がないようにします。実際には15K Rubyオブジェクトがあるためです。私の提案するパスはキャッシュをロードして、1つのキーで1つのレコード値にアクセスできるようにすることです。したがって、 "key_bob"はfind_by_name( "bob")レコードを返し、 "key_ryan"はfind_by_name( "ryan")レコードを検索します。しかし、計算で常に同じデータのコレクションが表示されることがわかっている場合は、記事の#cachedメソッドも役立ちます。 – RyanWilcox

関連する問題