ユーザー生成コンテンツを含む Web サイトを構築しています。ホームページで、作成されたすべてのアイテムのリストを表示したいのですが、それらをビュー カウンターで並べ替えられるようにしたいと考えています。それは簡単に聞こえますが、複数のカウンターが必要です。前日、先週、先月、または全体で最もアクセスされたアイテムはどれか知りたいです。
私の最初のアイデアは、アイテムの DB テーブルに 4 つのカウンター列を作成することでした。デイリー、ウィークリー、マンスリー、オーバーオールのそれぞれに 1 つずつ、24 時間ごとにデイリー カウンター、7 日ごとにウィークリー カウンターなどをクリアする cron ジョブを作成します。
しかし、これに関する私の問題は、週間カウンターがクリアされた直後に、その週で最も閲覧されたアイテムを知りたい場合はどうなるかということです。
私が必要としているのは、古すぎるページビューごとに減少し、新しいページビューごとに増加する継続的なカウンターを作成する効率的な方法です。
現在、redis サーバーで解決策を考えていますが、まだ解決策がありません。
ここでは一般的なアイデアを探しているだけですが、参考までに、このアプリケーションを Ruby on Rails で開発しています。