Class: SplitIoClient::Cache::Repositories::Metrics::RedisRepository
- Inherits:
-
SplitIoClient::Cache::Repository
- Object
- SplitIoClient::Cache::Repository
- SplitIoClient::Cache::Repositories::Metrics::RedisRepository
- Defined in:
- lib/cache/repositories/metrics/redis_repository.rb
Instance Method Summary collapse
- #add_count(counter, delta) ⇒ Object
- #add_gauge(gauge, value) ⇒ Object
- #add_latency(operation, time_in_ms, binary_search) ⇒ Object
- #clear_counts ⇒ Object
- #clear_gauges ⇒ Object
- #clear_latencies ⇒ Object
- #counts ⇒ Object
- #gauges ⇒ Object
-
#initialize(adapter = nil, config) ⇒ RedisRepository
constructor
A new instance of RedisRepository.
- #latencies ⇒ Object
Methods inherited from SplitIoClient::Cache::Repository
Constructor Details
#initialize(adapter = nil, config) ⇒ RedisRepository
Returns a new instance of RedisRepository.
6 7 8 9 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 6 def initialize(adapter = nil, config) @config = config @adapter = adapter end |
Instance Method Details
#add_count(counter, delta) ⇒ Object
11 12 13 14 15 16 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 11 def add_count(counter, delta) prefixed_name = impressions_metrics_key("count.#{counter}") counts = @adapter.find_strings_by_prefix(prefixed_name) @adapter.inc(prefixed_name, delta) end |
#add_gauge(gauge, value) ⇒ Object
30 31 32 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 30 def add_gauge(gauge, value) # TODO end |
#add_latency(operation, time_in_ms, binary_search) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 18 def add_latency(operation, time_in_ms, binary_search) prefixed_name = impressions_metrics_key("latency.#{operation}") latencies = @adapter.find_strings_by_prefix(prefixed_name) if operation == 'sdk.get_treatment' @adapter.inc("#{prefixed_name}.#{binary_search.add_latency_millis(time_in_ms, true)}") return end @adapter.append_to_string(prefixed_name, "#{time_in_ms},") end |
#clear_counts ⇒ Object
75 76 77 78 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 75 def clear_counts keys = @adapter.find_strings_by_prefix(impressions_metrics_key('count')) @adapter.delete(keys) end |
#clear_gauges ⇒ Object
85 86 87 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 85 def clear_gauges # TODO end |
#clear_latencies ⇒ Object
80 81 82 83 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 80 def clear_latencies keys = @adapter.find_strings_by_prefix(impressions_metrics_key('latency')) @adapter.delete(keys) end |
#counts ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 34 def counts keys = @adapter.find_strings_by_prefix(impressions_metrics_key("count")) return [] if keys.empty? @adapter.multiple_strings(keys).map do |name, data| [name.gsub(impressions_metrics_key('count.'), ''), data] end.to_h end |
#gauges ⇒ Object
71 72 73 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 71 def gauges # TODO end |
#latencies ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/cache/repositories/metrics/redis_repository.rb', line 44 def latencies collected_latencies = {} latencies_array = Array.new(BinarySearchLatencyTracker::BUCKETS.length, 0) keys = @adapter.find_strings_by_prefix(impressions_metrics_key('latency')) return [] if keys.empty? found_latencies = @adapter.multiple_strings(keys).map do |name, data| [name.gsub(impressions_metrics_key('latency.'), ''), data] end.to_h found_latencies.each do |key, value| if key.start_with?('sdk.get_treatment') index = key.gsub('sdk.get_treatment.', '').to_i latencies_array[index] = value.to_i next end collected_latencies[key] = value.split(',').map(&:to_f) end collected_latencies['sdk.get_treatment'] = latencies_array unless latencies_array.reduce(:+) == 0 collected_latencies end |