Redis
 sql >> Base de données >  >> NoSQL >> Redis

Pourquoi je ne peux pas exécuter le script lua dans redis après le redémarrage de redis ?

Les scripts Lua côté serveur ne sont ni enregistrés ni stockés par Redis. Ils ne sont pas similaires aux procédures stockées que vous pouvez trouver dans RDBMS.

Les clients sont censés fournir le texte du script au moins pour la première exécution du script (c'est-à-dire utiliser EVAL pour la première exécution, et EVALSHA pour les prochains appels). Alternativement, vous pouvez également utiliser SCRIPT LOAD et SCRIPT EXISTS, cela peut être plus pratique selon la situation.

C'est un peu plus complexe à gérer pour l'application, mais il y a des avantages :cela rend le serveur Redis sans état concernant les scripts Lua. Le code de l'application (y compris les scripts Lua) est géré côté application. Vous n'avez pas besoin d'appliquer quelque chose sur le serveur Redis avant de charger une nouvelle version de l'application (même si les scripts Lua ont changé).

Cette propriété est très utile dans le contexte d'une infrastructure distribuée pour prendre en charge les chargements d'applications à la volée, ou le partitionnement côté client ou le cluster Redis.