「同じ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
あとは必要な所に上のメソッドを追加するだけ。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
以上でごあす!
> dc = MEMCACHED
> dc.flush_all
0 件のコメント:
コメントを投稿