Class: SplitIoClient::Cache::Senders::RedisImpressionsSender

Inherits:
ImpressionsSenderAdapter show all
Defined in:
lib/splitclient-rb/cache/senders/impressions_adapter/redis_sender.rb

Constant Summary collapse

EXPIRE_SECONDS =
3600

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ RedisImpressionsSender

Returns a new instance of RedisImpressionsSender.



9
10
11
12
# File 'lib/splitclient-rb/cache/senders/impressions_adapter/redis_sender.rb', line 9

def initialize(config)
  @config = config
  @adapter = @config.impressions_adapter
end

Instance Method Details

#record_impressions_count(impressions_count) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/splitclient-rb/cache/senders/impressions_adapter/redis_sender.rb', line 24

def record_impressions_count(impressions_count)
  return if impressions_count.nil? || impressions_count.empty?

  result = @adapter.redis.pipelined do |pipeline|
    impressions_count.each do |key, value|
      pipeline.hincrby(impressions_count_key, key, value)
    end
  end

  expire_impressions_count_key(impressions_count, result)
rescue StandardError => e
  @config.log_found_exception(__method__.to_s, e)
end

#record_uniques_key(uniques) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/splitclient-rb/cache/senders/impressions_adapter/redis_sender.rb', line 14

def record_uniques_key(uniques)
  return if uniques.nil? || uniques.empty?

  size = @adapter.add_to_queue(unique_keys_key, uniques_formatter(uniques))

  @adapter.expire(unique_keys_key, EXPIRE_SECONDS) if uniques.length == size
rescue StandardError => e
  @config.log_found_exception(__method__.to_s, e)
end