https://github.com/kickstarter/rack-attack という便利なgemがあります。
特定のアクセスのみを許可するSafelists機能や、特定のアクセスを弾くBlocklist機能や n秒間にn回アクセスされたらアクセスを弾くThrottles機能、特定のアクセスを記録するTracks機能等々があり、大変便利です。
で、Throttles機能なんかはアプリケーションサーバーが複数ある場合、アクセス回数を共通ストレージに保存しないと正確なカウントができません。
rack-attack はmemcached と redis が保存先に選べます。 (デフォルトはサーバーのメモリに保存される)
Redisに保存したい場合は以下のように設定すればよいです。
Gemfile
gem 'rack-attack' gem 'redis-activesupport'
config/application.rb
config.middleware.use Rack::Attack
config/initializers/rack-attack.rb
class Rack::Attack cache.store = ActiveSupport::Cache::RedisStore.new('redis://localhost:6379/0/cache')
'redis://localhost:6379/0/cache' の 0
はRedisのDBの番号、 cache
はnamespaceです。