class Redis
def raw_call_command(argvp)
def raw_call_command(argvp) pipeline = argvp[0].is_a?(Array) unless pipeline argvv = [argvp] else argvv = argvp end if MULTI_BULK_COMMANDS[argvv.flatten[0].to_s] # TODO improve this code argvp = argvv.flatten values = argvp.pop.to_a.flatten argvp = values.unshift(argvp[0]) command = ["*#{argvp.size}"] argvp.each do |v| v = v.to_s command << "$#{get_size(v)}" command << v end command = command.map {|cmd| "#{cmd}\r\n"}.join else command = "" argvv.each do |argv| bulk = nil argv[0] = argv[0].to_s.downcase argv[0] = ALIASES[argv[0]] if ALIASES[argv[0]] raise "#{argv[0]} command is disabled" if DISABLED_COMMANDS[argv[0]] if BULK_COMMANDS[argv[0]] and argv.length > 1 bulk = argv[-1].to_s argv[-1] = get_size(bulk) end command << "#{argv.join(' ')}\r\n" command << "#{bulk}\r\n" if bulk end end results = maybe_lock { process_command(command, argvv) } return pipeline ? results : results[0] end