    # File lib/active_support/vendor/memcache-client-1.6.5/memcache.rb, line 223
      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_str = keys_for_server.join ' '
          begin
            values = cache_get_multi server, keys_for_server_str
            values.each do |key, value|
              results[cache_keys[key]] = Marshal.load value
            end
          rescue IndexError => e
            # Ignore this server and try the others
            logger.warn { "Unable to retrieve #{keys_for_server.size} elements from #{server.inspect}: #{e.message}"} if logger
          end
        end

        return results
      rescue TypeError => err
        handle_error nil, err
      end