現在、ビューカウンターを含む会員制サイトを開発中です。過去の経験によると、SQL でビュー カウンターを使用するとコストがかかります。実際、私はビューカウンターを避けていましたが、今日ではオプションではありません.
プロジェクトが使用する
- レール 4.0.2
- Redis オブジェクトの宝石
Redis To Go
デモンストレーションのために、プラグインでHerokuを使用したいと考えています- 現在、カウンタは PG ( Active Record ) に基づいています。
- Redis オブジェクトは AR でカウントするために使用されています (ただし、AR プロファイル テーブルに保存する方法は?)
ニーズ・実現への想い
- Redis でカウントし、おそらく Rake + スケジュール タスクを使用して定期的に PG テーブルに保存します
- 効率
問題
- Redis DB にクエリを実行してすべての Profile オブジェクトを検索する方法がわかりません。
このオブジェクトのリストを取得できれば、rake タスクを記述して各項目を反復処理し、モーダル値をデータベースに保存/更新できます。
データベースに保存されているすべてのプロファイル値を取得するには、検索KEYS profile:*
が唯一の方法であるように思われます。それから、手動でオブジェクトを取得して値を更新する必要があります。
質問
keys
キーを見つけてから、1 日 1 回、スケジュールされたタスクで (効率の観点から) 使用するのに適したオブジェクトを見つけるために使用しています。- でできるように、すべての
Profile
オブジェクトを Redis db から直接取得する方法はありますか?Profile.all
ActiveRecord
- カウンターを実装するための提案は大歓迎です (Redis ベースでなくても)
-
class Profile < ActiveRecord::Base
# To handle the profile counter
include Redis::Objects
counter :tviews
# Associations
belongs_to :user
# Other attributes
end
profile_controller.rb
class ProfilesController < ApplicationController
def public
@profile.tviews.increment
# @profile.save # Save of AR based counting
end
end
スリムで
p.text-center#profile-counter
| Views -
= @profile.tviews.value + @profile.views