Class: Gitlab::ApplicationRateLimiter::IncrementPerActionedResource

Inherits:
BaseStrategy
  • Object
show all
Defined in:
lib/gitlab/application_rate_limiter/increment_per_actioned_resource.rb

Instance Method Summary collapse

Constructor Details

#initialize(resource_key) ⇒ IncrementPerActionedResource

Returns a new instance of IncrementPerActionedResource.



6
7
8
# File 'lib/gitlab/application_rate_limiter/increment_per_actioned_resource.rb', line 6

def initialize(resource_key)
  @resource_key = resource_key
end

Instance Method Details

#increment(cache_key, expiry) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/gitlab/application_rate_limiter/increment_per_actioned_resource.rb', line 10

def increment(cache_key, expiry)
  with_redis do |redis|
    redis.pipelined do |pipeline|
      pipeline.sadd?(cache_key, resource_key)
      pipeline.expire(cache_key, expiry)
      pipeline.scard(cache_key)
    end.last
  end
end

#read(cache_key) ⇒ Object



20
21
22
23
24
# File 'lib/gitlab/application_rate_limiter/increment_per_actioned_resource.rb', line 20

def read(cache_key)
  with_redis do |redis|
    redis.scard(cache_key)
  end
end