Class: SplitIoClient::Cache::Repositories::Metrics::RedisRepository
- Inherits:
-
SplitIoClient::Cache::Repository
- Object
- SplitIoClient::Cache::Repository
- SplitIoClient::Cache::Repositories::Metrics::RedisRepository
- Defined in:
- lib/splitclient-rb/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 ⇒ Object
- #clear_counts ⇒ Object
- #clear_gauges ⇒ Object
- #clear_latencies ⇒ Object
- #counts ⇒ Object
- #gauges ⇒ Object
-
#initialize(adapter = nil) ⇒ RedisRepository
constructor
A new instance of RedisRepository.
- #latencies ⇒ Object
Methods inherited from SplitIoClient::Cache::Repository
Constructor Details
#initialize(adapter = nil) ⇒ RedisRepository
Returns a new instance of RedisRepository.
6 7 8 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 6 def initialize(adapter = nil) @adapter = adapter end |
Instance Method Details
#add_count(counter, delta) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 10 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
28 29 30 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 28 def add_gauge(gauge, value) # TODO end |
#add_latency(operation, time_in_ms, binary_search) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 17 def add_latency(operation, time_in_ms, binary_search) prefixed_name = impressions_metrics_key("latency.#{operation}") 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 ⇒ Object
87 88 89 90 91 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 87 def clear clear_counts clear_latencies clear_gauges end |
#clear_counts ⇒ Object
73 74 75 76 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 73 def clear_counts keys = @adapter.find_strings_by_prefix(impressions_metrics_key('count')) @adapter.delete(keys) end |
#clear_gauges ⇒ Object
83 84 85 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 83 def clear_gauges # TODO end |
#clear_latencies ⇒ Object
78 79 80 81 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 78 def clear_latencies keys = @adapter.find_strings_by_prefix(impressions_metrics_key('latency')) @adapter.delete(keys) end |
#counts ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 32 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
69 70 71 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 69 def gauges # TODO end |
#latencies ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/splitclient-rb/cache/repositories/metrics/redis_repository.rb', line 42 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 |