Class: RateLimiter::Storage::Memcache

Inherits:
Base
  • Object
show all
Defined in:
lib/rate_limiter/storage/memcache.rb

Instance Method Summary collapse

Constructor Details

#initializeMemcache



6
7
8
# File 'lib/rate_limiter/storage/memcache.rb', line 6

def initialize
  @cache = Dalli::Client.new
end

Instance Method Details

#add_request(client_id) ⇒ Object



10
11
12
13
14
15
# File 'lib/rate_limiter/storage/memcache.rb', line 10

def add_request(client_id)
  key = "rate_limit:#{client_id}"
  timestamps = @cache.get(key) || []
  timestamps << Time.now.to_i
  @cache.set(key, timestamps, 60) # Set to expire as defined in the configuration
end

#requests_in_last_minute(client_id) ⇒ Object



17
18
19
20
21
22
# File 'lib/rate_limiter/storage/memcache.rb', line 17

def requests_in_last_minute(client_id)
  key = "rate_limit:#{client_id}"
  timestamps = @cache.get(key) || []
  one_minute_ago = Time.now.to_i - 60
  timestamps.select { |timestamp| timestamp > one_minute_ago }
end