read(name, options = nil)
public
Reads data from the cache, using the given key. If there is data in the
cache with the given key, then that data is returned. Otherwise,
nil is returned.
Note, if data was written with the :expires_in or
:version options, both of these conditions are applied before the
data is returned.
Options are passed to the underlying cache implementation.
Show source
def read(name, options = nil)
options = merged_options(options)
key = normalize_key(name, options)
version = normalize_version(name, options)
instrument(:read, name, options) do |payload|
entry = read_entry(key, **options, event: payload)
if entry
if entry.expired?
delete_entry(key, **options)
payload[:hit] = false if payload
nil
elsif entry.mismatched?(version)
payload[:hit] = false if payload
nil
else
payload[:hit] = true if payload
entry.value
end
else
payload[:hit] = false if payload
nil
end
end
end