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