Scripts Lua - Amazon ElastiCache

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Scripts Lua

Valkey et Redis prennent OSS en charge plus de 200 commandes, y compris celles permettant d'exécuter des scripts Lua. Cependant, en ce qui concerne les scripts Lua, plusieurs pièges peuvent affecter la mémoire et la disponibilité de Valkey ou Redis. OSS

Scripts Lua non paramétrés

Chaque script Lua est mis en cache sur le OSS serveur Valkey ou Redis avant son exécution. Les scripts Lua non paramétrés sont uniques, ce qui peut amener le OSS serveur Valkey ou Redis à stocker un grand nombre de scripts Lua et à consommer davantage de mémoire. Pour atténuer ce problème, assurez-vous que tous les scripts Lua sont paramétrés et qu'ils nettoient régulièrement les scripts SCRIPT FLUSH Lua mis en cache si nécessaire.

L’exemple suivant illustre l’utilisation des scripts paramétrés. Le premier exemple d’approche non paramétrée, qui n’est pas recommandée, donne lieu à trois scripts Lua mis en cache différents :

eval "return redis.call('set','key1','1')" 0 eval "return redis.call('set','key2','2')" 0 eval "return redis.call('set','key3','3')" 0

Utilisez plutôt le modèle suivant pour créer un script unique capable d’accepter les paramètres transmis :

eval "return redis.call('set',KEYS[1],ARGV[1])" 1 key1 1 eval "return redis.call('set',KEYS[1],ARGV[1])" 1 key2 2 eval "return redis.call('set',KEYS[1],ARGV[1])" 1 key3 3

Scripts Lua de longue durée

Les scripts Lua peuvent exécuter plusieurs commandes de manière atomique. Leur exécution peut donc prendre plus de temps qu'une commande Valkey ou Redis normale. OSS Si le script Lua exécute uniquement des opérations en lecture seule, vous pouvez l’arrêter en plein milieu. Cependant, dès que le script Lua exécute une opération d’écriture, il devient impossible de l’arrêter et il doit être s’exécuter jusqu’à la fin. Un script Lua de longue durée qui est en train de muter peut empêcher le OSS serveur Valkey ou Redis de répondre pendant une longue période. Pour atténuer ce problème, évitez les scripts Lua de longue durée et testez le script dans un environnement de pré-production.

Script Lua avec écritures en mode furtif

Un script Lua peut continuer à écrire de nouvelles données dans Valkey ou Redis de plusieurs manières, OSS même lorsque Valkey ou Redis est terminé : OSS maxmemory

  • Le script démarre lorsque le OSS serveur Valkey ou Redis se trouve en dessous et contient plusieurs maxmemory opérations d'écriture à l'intérieur

  • La première commande d'écriture du script ne consomme pas de mémoire (par exempleDEL), suivie d'autres opérations d'écriture consommant de la mémoire

  • Vous pouvez atténuer ce problème en configurant une politique d'expulsion appropriée dans le OSS serveur Valkey ou Redis autre que. noeviction Cela permet à Redis OSS d'expulser des objets et de libérer de la mémoire entre les scripts Lua.