0Pricing
Lua Academy · Lección

EVAL y el entorno Lua de Redis

Ejecute scripts Lua con EVAL, comprenda KEYS/ARGV y el almacenamiento en caché de scripts.

EVAL y el entorno Lua de Redis es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.

¿Por qué Lua en Redis?

Redis permite ejecutar scripts de Lua dentro del servidor mediante EVAL. Los scripts se ejecutan de forma atómica: ningún otro comando de Redis se ejecuta de manera concurrente, lo que permite realizar operaciones de varios pasos de forma segura.

Comando EVAL

EVAL script numkeys key [key ...] arg [arg ...]: el script accede a las claves mediante la tabla KEYS y a los argumentos mediante la tabla ARGV (con índices que empiezan en 1).

-- Redis CLI:
EVAL "return KEYS[1]" 1 mykey
-- Returns: mykey

Acceso a KEYS y ARGV

En Lua, KEYS y ARGV son tablas globales rellenadas por EVAL.

EVAL "
local key = KEYS[1]
local val = ARGV[1]
redis.call('SET', key, val)
return redis.call('GET', key)
" 1 greeting hello

redis.call frente a redis.pcall

redis.call(cmd, ...) ejecuta un comando de Redis y genera un error de Lua si falla. redis.pcall devuelve una tabla de error en lugar de generar una excepción.

local ok, err = pcall(function()
  redis.call("INVALID_CMD")
end)
if not ok then print("Error caught:", err) end

Valores de retorno

Los tipos de Lua se convierten en tipos de respuesta de Redis: números → enteros, cadenas → cadenas bulk, tablas → arrays multibulk, false/nil → respuesta nil, true → entero 1.

Almacenamiento en caché de scripts

Redis almacena en caché los scripts compilados mediante SHA1. La primera llamada a EVAL compila el script y lo almacena en caché. Las llamadas posteriores con el mismo SHA (mediante EVALSHA) omiten la compilación.

Acceso a tipos de datos de Redis

Todos los comandos estándar de Redis están disponibles mediante redis.call: GET, SET, HGET, LPUSH, EXPIRE, etc.

local count = redis.call("INCR", KEYS[1])
redis.call("EXPIRE", KEYS[1], 3600)
return count

Garantía de atomicidad

Mientras se ejecuta un script de Lua, Redis bloquea a todos los demás clientes. Los scripts deben ser rápidos (de microsegundos a milisegundos). Los scripts de larga duración bloquean todo el servidor.

Versión de Lua en Redis

Redis integra Lua 5.1 (o una versión compatible con 5.1). Algunas características, como goto y bit32, pueden variar. Utilice las bibliotecas cjson y cmsgpack proporcionadas por Redis para JSON/MessagePack.

Prácticas recomendadas para gestionar errores

Utilice redis.pcall para las operaciones que puedan fallar (por ejemplo, errores de tipo). Devuelva tablas de error estructuradas para que el cliente las interprete.

Depuración de scripts de Redis

Utilice redis.log(redis.LOG_DEBUG, "message") para escribir mensajes de depuración en el registro de Redis. Pruebe los scripts en redis-cli con EVAL antes de ejecutar SCRIPT LOAD.

Pregunta sobre Redis Lua

¿Cuál es la principal ventaja de ejecutar scripts de Lua en Redis mediante EVAL?

Repaso: EVAL y el entorno Lua de Redis

EVAL ejecuta scripts de Lua de forma atómica en Redis. Acceda a las claves mediante KEYS[n] y a los argumentos mediante ARGV[n]. Utilice redis.call para ejecutar comandos. Los scripts se almacenan en caché mediante SHA1. Mantenga los scripts rápidos para evitar bloquear el servidor.

Preguntas frecuentes

¿La lección «EVAL y el entorno Lua de Redis» es gratis?

Sí — el texto completo de «EVAL y el entorno Lua de Redis» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.

¿Qué aprenderé en «EVAL y el entorno Lua de Redis»?

Ejecute scripts Lua con EVAL, comprenda KEYS/ARGV y el almacenamiento en caché de scripts. Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Lua Academy?

No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «EVAL y el entorno Lua de Redis»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Lua Academy?

Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. EVAL y el entorno Lua de Redis
  2. Operaciones atómicas y transacciones
  3. Limitación de frecuencia con Lua
  4. SCRIPT LOAD y EVALSHA
← Volver a Lua Academy