class ActiveSupport::Cache::Store

def read(name, options = nil)

Other options will be handled by the specific cache store implementation.

as a cache miss. This feature is used to support recyclable cache keys.
version does not match the requested version, the read will be treated
* +:version+ - Specifies a version for the cache entry. If the cached
* +:namespace+ - Replace the store namespace for this call.

==== Options

the data is returned.
:version options, both of these conditions are applied before
Note, if data was written with the :expires_in or

+nil+ is returned.
the cache with the given key, then that data is returned. Otherwise,
Reads data from the cache, using the given key. If there is data in
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
        begin
          entry.value
        rescue DeserializationError
          payload[:hit] = false
          nil
        end
      end
    else
      payload[:hit] = false if payload
      nil
    end
  end
end