Class: RailsRateLimit::Stores::Redis
- Defined in:
- lib/rails_rate_limit/stores/redis.rb
Instance Method Summary collapse
- #count_requests(key, period) ⇒ Object
-
#initialize ⇒ Redis
constructor
A new instance of Redis.
- #record_request(key, period) ⇒ Object
Methods inherited from Base
Constructor Details
#initialize ⇒ Redis
Returns a new instance of Redis.
6 7 8 9 |
# File 'lib/rails_rate_limit/stores/redis.rb', line 6 def initialize @redis = RailsRateLimit.configuration.redis_connection raise "Redis connection not configured" unless @redis end |
Instance Method Details
#count_requests(key, period) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/rails_rate_limit/stores/redis.rb', line 11 def count_requests(key, period) now = Time.now.to_f min_time = now - period key = cache_key(key) @redis.multi do |redis| redis.zremrangebyscore(key, 0, min_time) redis.zcard(key) end.last rescue StandardError => e RailsRateLimit.logger&.error("RailsRateLimit::Stores::Redis#count_requests error: #{e.message}") 0 end |
#record_request(key, period) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/rails_rate_limit/stores/redis.rb', line 25 def record_request(key, period) now = Time.now.to_f key = cache_key(key) @redis.multi do |redis| redis.zadd(key, now, now) redis.expire(key, period) end rescue StandardError => e RailsRateLimit.logger&.error("RailsRateLimit::Stores::Redis#record_request error: #{e.message}") end |