EVAL e ambiente Lua do Redis
Execute scripts Lua com EVAL, compreenda KEYS/ARGV e o armazenamento de scripts em cache.
EVAL e ambiente Lua do Redis é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.
Por que Lua no Redis?
O Redis permite executar scripts Lua dentro do servidor com EVAL. Os scripts são executados de forma atômica — nenhum outro comando do Redis é executado simultaneamente, permitindo operações seguras em várias etapas.
Comando EVAL
EVAL script numkeys key [key ...] arg [arg ...] — o script acessa as chaves por meio da tabela KEYS e os argumentos por meio da tabela ARGV (indexada a partir de 1).
-- Redis CLI:
EVAL "return KEYS[1]" 1 mykey
-- Returns: mykeyAcessando KEYS e ARGV
Em Lua, KEYS e ARGV são tabelas globais preenchidas por EVAL.
EVAL "
local key = KEYS[1]
local val = ARGV[1]
redis.call('SET', key, val)
return redis.call('GET', key)
" 1 greeting helloredis.call versus redis.pcall
redis.call(cmd, ...) executa um comando do Redis e gera um erro de Lua em caso de falha. redis.pcall retorna uma tabela de erro em vez de gerar um erro.
local ok, err = pcall(function()
redis.call("INVALID_CMD")
end)
if not ok then print("Error caught:", err) endValores de retorno
Os tipos Lua são convertidos em tipos de resposta do Redis: números → inteiros, strings → strings de bloco, tabelas → matrizes de vários elementos, false/nil → resposta nil, true → inteiro 1.
Armazenamento em cache de scripts
O Redis armazena scripts compilados em cache por SHA1. A primeira chamada a EVAL compila e armazena o script em cache. As chamadas seguintes com o mesmo SHA (por meio de EVALSHA) ignoram a compilação.
Acesso aos tipos de dados do Redis
Todos os comandos padrão do Redis estão disponíveis por meio de redis.call: GET, SET, HGET, LPUSH, EXPIRE etc.
local count = redis.call("INCR", KEYS[1])
redis.call("EXPIRE", KEYS[1], 3600)
return countGarantia de atomicidade
Enquanto um script Lua é executado, o Redis bloqueia todos os outros clientes. Os scripts devem ser rápidos (de microssegundos a milissegundos). Scripts de longa duração bloqueiam o servidor inteiro.
Versão do Lua no Redis
O Redis incorpora o Lua 5.1 (ou uma versão compatível com o 5.1). Alguns recursos, como goto e bit32, podem ser diferentes. Use as bibliotecas cjson e cmsgpack fornecidas pelo Redis para JSON/MessagePack.
Práticas recomendadas para tratamento de erros
Use redis.pcall para operações que podem falhar (por exemplo, erros de tipo). Retorne tabelas de erro estruturadas para que o cliente possa interpretá-las.
Depuração de scripts Redis
Use redis.log(redis.LOG_DEBUG, "message") para gravar mensagens de depuração no registro do Redis. Teste os scripts no redis-cli com EVAL antes de SCRIPT LOAD.
Pergunta sobre Redis Lua
Qual é o principal benefício de executar scripts Lua no Redis com EVAL?
Recapitulação: EVAL e o ambiente Lua do Redis
EVAL executa scripts Lua de forma atômica no Redis. Acesse as chaves por meio de KEYS[n] e os argumentos por meio de ARGV[n]. Use redis.call para os comandos. Os scripts são armazenados em cache por SHA1. Mantenha os scripts rápidos para evitar o bloqueio do servidor.
Perguntas Frequentes
A aula “EVAL e ambiente Lua do Redis” é grátis?
Sim — o texto completo de “EVAL e ambiente Lua do Redis” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.
O que vou aprender em “EVAL e ambiente Lua do Redis”?
Execute scripts Lua com EVAL, compreenda KEYS/ARGV e o armazenamento de scripts em cache. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Lua Academy?
Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “EVAL e ambiente Lua do Redis”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Lua Academy?
Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- EVAL e ambiente Lua do Redis
- Operações atômicas e transações
- Limitação de taxa com Lua
- SCRIPT LOAD e EVALSHA