def read(key, options = {})
      options = merged_options(options)

      invoke(:read, key) do |store|
        key = namespaced_key(key, options)

        refresh_entity(key, store, options)

        entity.load(store.get(key))
      end
    end
def read(key, options = {})
      options = merged_options(options)

      invoke(:read, key) do |store|
        key = namespaced_key(key, options)

        refresh_entity(key, store, options)

        entity.load(store.get(key))
      end
    end
Creates a new Readthis::Cache object with the given options.

 @option options [Hash] :redis Options that will be passed to the redis
   connection
 @option options [Boolean] :compress (false) Enable or disable automatic
   compression
 @option options [Number] :compression_threshold (8k) Minimum string size
   for compression
 @option options [Number] :expires_in The number of seconds until an entry
   expires
 @option options [Boolean] :refresh (false) Automatically refresh key
   expiration
 @option options [Boolean] :retain_nils (false) Whether nil values should
   be included in read_multi output
 @option options [Module] :marshal (Marshal) Module that responds to
   `dump` and `load`
 @option options [String] :namespace Prefix used to namespace entries
 @option options [Number] :pool_size (5) The number of threads in the pool
 @option options [Number] :pool_timeout (5) How long before a thread times
   out

 @example Create a new cache instance

   Readthis::Cache.new(namespace: 'cache',
                       redis: { url: 'redis://localhost:6379/0' })

 @example Create a compressed cache instance

   Readthis::Cache.new(compress: true, compression_threshold: 2048)

 Fetches 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.

 @param [String] key Key for lookup
 @param [Hash] options Optional overrides

 @example

   cache.read('missing') # => nil
   cache.read('matched') # => 'some value'