1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
# frozen_string_literal: true
require 'ddmetrics'
class Cache
attr_reader :counter
def initialize
@map = {}
@counter = DDMetrics::Counter.new
end
def []=(key, value)
@counter.increment(type: :set)
@map[key] = value
end
def [](key)
if @map.key?(key)
@counter.increment(type: :get_hit)
else
@counter.increment(type: :get_miss)
end
@map[key]
end
end
cache = Cache.new
cache['greeting']
cache['greeting']
cache['greeting'] = 'Hi there!'
cache['greeting']
cache['greeting']
cache['greeting']
p cache.counter.get(type: :set)
# => 1
p cache.counter.get(type: :get_hit)
# => 3
p cache.counter.get(type: :get_miss)
# => 2
puts cache.counter
|