def read_multi(*keys)
      options = merged_options(extract_options!(keys))
      mapping = keys.map { |key| namespaced_key(key, options) }

      return {} if keys.empty?

      invoke(:read_multi, keys) do |store|
        values = store.mget(*mapping).map { |value| entity.load(value) }

        refresh_entity(mapping, store, options)

        zipped_results(keys, values, options)
      end
    end
def read_multi(*keys)
      options = merged_options(extract_options!(keys))
      mapping = keys.map { |key| namespaced_key(key, options) }

      return {} if keys.empty?

      invoke(:read_multi, keys) do |store|
        values = store.mget(*mapping).map { |value| entity.load(value) }

        refresh_entity(mapping, store, options)

        zipped_results(keys, values, options)
      end
    end
Efficiently read multiple values at once from the cache. Options can be
 passed in the last argument.

 @overload read_multi(keys)
   Return all values for the given keys.
   @param [String] One or more keys to fetch
   @param [Hash] options Configuration to override

 @return [Hash] A hash mapping keys to the values found.

 @example

   cache.read_multi('a', 'b') # => { 'a' => 1 }
   cache.read_multi('a', 'b', retain_nils: true) # => { 'a' => 1, 'b' => nil }