# File lib/active_support/vendor/memcache-client-1.5.0/memcache.rb, line 264
  def get_multi(*keys)
    raise MemCacheError, 'No active servers' unless active?

    keys.flatten!
    key_count = keys.length
    cache_keys = {}
    server_keys = Hash.new { |h,k| h[k] = [] }

    # map keys to servers
    keys.each do |key|
      server, cache_key = request_setup key
      cache_keys[cache_key] = key
      server_keys[server] << cache_key
    end

    results = {}

    server_keys.each do |server, keys_for_server|
      keys_for_server = keys_for_server.join ' '
      values = if @multithread then
                 threadsafe_cache_get_multi server, keys_for_server
               else
                 cache_get_multi server, keys_for_server
               end
      values.each do |key, value|
        results[cache_keys[key]] = Marshal.load value
      end
    end

    return results
  rescue TypeError, SocketError, SystemCallError, IOError => err
    handle_error server, err
  end