EVAL et environnement Lua de Redis
Exécutez des scripts Lua avec EVAL, comprenez KEYS/ARGV et la mise en cache des scripts.
EVAL et environnement Lua de Redis est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.
Pourquoi Lua dans Redis ?
Redis permet d'exécuter des scripts Lua directement sur le serveur avec EVAL. Les scripts s'exécutent de manière atomique : aucune autre commande Redis ne s'exécute simultanément, ce qui permet d'effectuer plusieurs opérations en toute sécurité.
Commande EVAL
EVAL script numkeys key [key ...] arg [arg ...] — le script accède aux clés via la table KEYS et aux arguments via la table ARGV (indexée à partir de 1).
-- Redis CLI:
EVAL "return KEYS[1]" 1 mykey
-- Returns: mykeyAccéder à KEYS et ARGV
En Lua, KEYS et ARGV sont des tables globales remplies par EVAL.
EVAL "
local key = KEYS[1]
local val = ARGV[1]
redis.call('SET', key, val)
return redis.call('GET', key)
" 1 greeting helloredis.call ou redis.pcall
redis.call(cmd, ...) exécute une commande Redis et déclenche une erreur Lua en cas d'échec. redis.pcall renvoie une table d'erreur au lieu de déclencher une erreur.
local ok, err = pcall(function()
redis.call("INVALID_CMD")
end)
if not ok then print("Error caught:", err) endValeurs de retour
Les types Lua sont convertis en types de réponse Redis : les nombres → entiers, les chaînes → chaînes bulk, les tables → tableaux multi-bulk, false/nil → réponse nil, true → entier 1.
Mise en cache des scripts
Redis met en cache les scripts compilés à l'aide de SHA1. Le premier EVAL compile et met le script en cache. Les appels suivants utilisant le même SHA (via EVALSHA) ignorent la compilation.
Accès aux types de données Redis
Toutes les commandes Redis standard sont disponibles via redis.call : GET, SET, HGET, LPUSH, EXPIRE, etc.
local count = redis.call("INCR", KEYS[1])
redis.call("EXPIRE", KEYS[1], 3600)
return countGarantie d'atomicité
Pendant l'exécution d'un script Lua, Redis bloque tous les autres clients. Les scripts doivent être rapides (de quelques microsecondes à quelques millisecondes). Les scripts longs bloquent le serveur entier.
Version de Lua dans Redis
Redis intègre Lua 5.1 (ou une version compatible avec 5.1). Certaines fonctionnalités comme goto et bit32 peuvent différer. Utilisez les bibliothèques cjson et cmsgpack fournies par Redis pour JSON et MessagePack.
Bonnes pratiques de gestion des erreurs
Utilisez redis.pcall pour les opérations susceptibles d'échouer (par exemple, en cas d'erreur de type). Renvoyez des tables d'erreur structurées que le client pourra interpréter.
Déboguer des scripts Redis
Utilisez redis.log(redis.LOG_DEBUG, "message") pour écrire des messages de débogage dans le journal Redis. Testez les scripts dans redis-cli avec EVAL avant SCRIPT LOAD.
Question sur Redis Lua
Quel est le principal avantage de l'exécution de scripts Lua dans Redis avec EVAL ?
Récapitulatif : EVAL et l'environnement Lua de Redis
EVAL exécute les scripts Lua de manière atomique dans Redis. Accédez aux clés via KEYS[n] et aux arguments via ARGV[n]. Utilisez redis.call pour les commandes. Les scripts sont mis en cache par SHA1. Gardez les scripts rapides pour éviter de bloquer le serveur.
Questions Fréquemment Posées
La leçon « EVAL et environnement Lua de Redis » est-elle gratuite ?
Oui — le texte complet de « EVAL et environnement Lua de Redis » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « EVAL et environnement Lua de Redis » ?
Exécutez des scripts Lua avec EVAL, comprenez KEYS/ARGV et la mise en cache des scripts. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Lua Academy ?
Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « EVAL et environnement Lua de Redis » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?
Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- EVAL et environnement Lua de Redis
- Opérations atomiques et transactions
- Limitation du débit avec Lua
- SCRIPT LOAD et EVALSHA