6

Ruby on Railsを使用していますが、別のサーバーに接続して取得した検索結果セットを保存する必要があります。問題は、結果セットをセッションに保存したくないことと、結果セットオブジェクトを複数のリクエストに保存できるものが必要なことです。

クエリには時間がかかるので、繰り返したくありません。オブジェクトを保存したり、オブジェクトをキャッシュしたりして、何度もクエリを実行する必要がないようにする方法はありますか?

ある種のオブジェクトストアを使用できますか?

どんな助けでも素晴らしいでしょう。

メモ化がオプションの場合、オブジェクトをメモ化するにはどうすればよいですか?接続にはまだ時間がかかるので、結果セットを保存する方法。

4

3 に答える 3

1

セッションに保存したくない場合は、明らかにここにオプションがあります。

DBに一時的に保存できます(DBのクエリは、別のサーバーからの再フェッチよりも高速であると思います:))。

また、memcachedのようなものを使用するオプションもあります。再起動するとすべてのデータが破棄されることに注意する必要があります。

何を達成する必要があるか、およびデータをどのように処理する必要があるかによって異なります。

于 2010-03-10T12:21:38.607 に答える
1

メモ化は、1回のリクエストでのみ機能します。複数のリクエストでは使用できません。

すべてのリクエストには、MemcacheやBDDなどのすべてのストレージリソースがあります。ActiveSupport:: Cache::MemCacheStoreを使用する場合。すべてのリクエストですべてのオブジェクトをプッシュおよびフェッチできます。

于 2010-03-10T13:03:56.990 に答える
1

リクエスト間でデータを保存する必要がある場合、メモ化はおそらくあなたが探しているものではありません。メモ化は通常、Ruby / Railsで、単一のリクエスト内で同じメソッドを繰り返し呼び出す場合に使用され、そのメソッドはコストがかかります(CPUを集中的に使用する、複数のDBリクエストなど)。

結果をインスタンス変数に格納するメソッドを記憶すると、メソッドを再評価するのではなく、次に呼び出されたときにインスタンス変数の値が返されます。さらに詳しく調べたい場合は、これに関するリソースがたくさんあります。

セッション間で保持する必要があり、異なるユーザー間で共有する必要があるデータについては、memcachedを強くお勧めします。Railsにはサポートが組み込まれているので、優れたリソースを掘り下げるのはそれほど難しくありません。

于 2010-03-10T13:06:23.060 に答える