0

データベースもコントローラーもない単純なレールアプリがあります。高電圧を使用してクエリをルーティングし、javascript を使用して、params ハッシュを使用してデータを取得します。

一般的な URL は次のようになります。

http://example.com/?id=37ed660aa222e61ebbbc02db

ユーザーが最近アクセスした 10 個の一意の URL を取得して、それらをビューに渡したいと思います。ユーザー、できれば同時セッション間で言ったことに注意してください。

ActiveSupport::Notifications または Production.log を使用してこれを取得する方法はありますか? コードが最適な場所を含む例は、大歓迎です!

4

1 に答える 1

0

Redis はこれに最適だと思います。これは NoSQL キー値ストア db の 1 つですが、順序付けられたリスト、キューなどである値部分のサポートにより、訪問時に一意の URL を FIFO リストに簡単に格納し、そのリストのサイズを制限する必要があります。 (リストの「古い」末尾にある URL を破棄します)、ビューに渡す最新の N 個の URL を取得します。あなたのリストは、すべてがメモリにとどまり、非常に高速になるように、十分小さくしておく必要があります。memcached または mongo または別のものでもこれを実行できる場合があります。ソリューションが保存された値をメモリに保持するのが最善だと思います。

まだ redis (または同様のもの) を使用していない場合、この機能のためだけに設定して維持するのはやり過ぎに思えるかもしれません。ただし、キャッシング、バックグラウンド ジョブ処理 (Resque / Sidekiq)、およびおそらくアプリ内の他のものにも使用することで、それ自体で元が取れるようにすることができます。

于 2014-05-03T02:13:01.247 に答える