2012年10月10日水曜日

RailsとMemocached

今回の案件で、
「同じIPアドレスから10分以内にアクセスが来たら、アクセスカウンターに加算しない」
という内容があったので、これをmemcachedを使って再現してみました。

まずはインストールその後Gemを入れます。
$ apt-get install memcached

https://github.com/mperham/dalli
gem "dalli" # memcached client

$ bundle install
次は設定です。キャッシュは10分で消すように設定します。
environments/development
MEMCACHED = Dalli::Client.new("localhost:11211", :expires_in => 600 )
あとはコントローラで以下の様に設定するだけだけ。
以下はコントローラーのプライベートで作りました。
「User」というテーブルに「dl_count」があってこれがアクセスカウンターです。
def counter
  key = "#{@user.id}-#{request.remote_ip}"
  unless MEMCACHED.get(key)
    @user.update_attribute(:dl_count, @user.dl_count + 1)
    MEMCACHED.set(key, true)
  end
end
あとは必要な所に上のメソッドを追加するだけ。
簡単でしたね〜

キャッシュの消し方も必要ですね。
コンソールで以下を実行します。
$ rails c
> dc = MEMCACHED
> dc.flush_all
以上でごあす!

0 件のコメント:

コメントを投稿