私はEコマースRailsアプリケーションを持っており、レポート上の理由から、過去1年以内に顧客からの注文をページに出力する必要があります。現在、データセットは非常に大きく、これらの注文を1ページに表示するにはかなりのSQL処理が必要です。このタスクは最初は非常に遅かったので、必要な注文の詳細をすべてRedisサーバーに移動し、データのフェッチが非常に高速になりましたが、まだ十分ではありません。
これが私たちが持っているものです:
Rendered **path**/sales_orders.html.haml within layouts/admin (39421.1ms)
Completed 200 OK in 44925ms (Views: 39406.8ms | ActiveRecord: 417.2ms)
アプリケーションはHerokuでホストされており、リクエストに30秒以上かかると、リクエストは強制終了されます。ご覧のとおり、私たちはその制限をはるかに超えています。ほとんどの場合、ビューのレンダリングで失われます。
このページには、ユーザーが注文を選択する日付範囲を選択できる日付フィルターが含まれています。したがって、日付範囲は毎回変更される可能性があるため、キャッシュは理想的なソリューションではありません。
これをどのように行うことができるかについてのアイデアはありますか?
Redisキーの形式は次のとおりです(以下はRedisハッシュです)。
orders:2012-01-01:123
orders:yyyy-mm-dd:$order-id
ユーザーが日付範囲を指定するだけで、orders名前空間の下でその日付範囲内のすべてのキーを取得します。
たとえば、Redis注文キーから顧客名を取得する方法は次のとおりです。
= REDIS.hget(order_key, "customer_name")