def slice(*keys, **options)
      keys.zip(values_at(*keys, **options)).reject do |_, value|
        value == nil
      end
    end
def slice(*keys, **options)
      keys.zip(values_at(*keys, **options)).reject do |_, value|
        value == nil
      end
    end
Returns a collection of key-value pairs corresponding to those supplied
 keys which are present in the key-value store, and their associated
 values.  Only those keys present in the store will have pairs in the
 return value.  The return value can be any enumerable object that yields
 pairs, so it could be a hash, but needn't be.

 @note The keys in the return value may be the same objects that were
   supplied (i.e. {Object#equal?}), or may simply be equal (i.e.
   {Object#==}).

 @note Some adapters may implement this method atomically. The default
   implmentation uses {#values_at}.

 @param (see #values_at)
 @option options (see #values_at)
 @return [<(Object, Object)>] A collection of key-value pairs
 @api public