class ActiveSupport::Cache::MemoryStore

def modify_value(name, amount, options)

If the key is not found it is created and set to +amount+.
Modifies the amount of an integer value that is stored in the cache.
def modify_value(name, amount, options)
  options = merged_options(options)
  key     = normalize_key(name, options)
  version = normalize_version(name, options)
  synchronize do
    entry = read_entry(key, **options)
    if !entry || entry.expired? || entry.mismatched?(version)
      write(name, Integer(amount), options)
      amount
    else
      num = entry.value.to_i + amount
      entry = Entry.new(num, expires_at: entry.expires_at, version: entry.version)
      write_entry(key, entry)
      num
    end
  end
end