Sha256: e450c37ca29c901df7720b6c2c530022df1ddc267965f1093fdae13ba46029ec

Contents?: true

Size: 703 Bytes

Versions: 4

Compression:

Stored size: 703 Bytes

Contents

# 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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ddmetrics-1.1.0 samples/cache.rb
ddmetrics-1.0.1 samples/cache.rb
ddmetrics-1.0.0 samples/cache.rb
ddmetrics-1.0.0rc1 samples/cache.rb