Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

324
Vistas
Nodo que ejecuta el script Lua para Redis. ¿Cómo devolver el conjunto ordenado del script Lua a Node?

Este es el código de script de Lua en el archivo test.lua:

 local ips_key = 'production:ips' local ids = redis.call('ZRANGE', ips_key, 0, '+inf', 'WITHSCORES') local result = {} for i, name in ipairs(ids) do table.insert(result, name) end return js.global:Array(table.unpack(result))

Estoy usando ioredis, que es un redis npm para evaluar este script lua. el valor devuelto no está definido. ¿Qué estoy haciendo mal? ¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Hay varios problemas con el script anterior.

L#2: ZRANGE no acepta +inf (o -inf ) como argumentos, la entrada debe ser índices en el conjunto ordenado; reemplácelo con -1 para recuperar el rango completo de elementos.

L#7: No hay una biblioteca js en Lua de Redis, por lo que no funcionará (y no es necesaria de todos modos)

L#7: table.unpack es Lua 5.3, mientras que Redis es 5.1; use unpack en su lugar cuando sea necesario.

L#7: No es necesario unpack el resultado que está devolviendo (si lo hace, solo recuperará el primer elemento de la matriz y eso es todo)

L#1 Entiendo que esto es una prueba, pero siempre use la tabla de entrada KEYS para pasar sus claves al script; nunca codifique/genere nombres clave dentro de él.

Con todo, esto debería "funcionar" cuando se llama con una sola tecla como entrada:

 local ips_key = KEYS[1] local ids = redis.call('ZRANGE', ips_key, 0, -1, 'WITHSCORES') local result = {} for i, name in ipairs(ids) do table.insert(result, name) end return result

Como nota final, el código actualmente "funciona" pero no hace nada: copia los resultados de la llamada a ZRANGE y los devuelve. Dicho de otra manera, la respuesta es la misma que simplemente llamar a ZRANGE regularmente sin Lua.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda