Scripts Lua - Amazon ElastiCache

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Scripts Lua

O Valkey e o Redis OSS oferecem suporte a mais de 200 comandos, incluindo aqueles para executar scripts Lua. No entanto, quando se trata de scripts Lua, existem várias armadilhas que podem afetar a memória e a disponibilidade do Valkey ou do Redis. OSS

Scripts Lua não parametrizados

Cada script Lua é armazenado em cache no OSS servidor Valkey ou Redis antes de ser executado. Os scripts Lua não parametrizados são exclusivos, o que pode fazer com que o OSS servidor Valkey ou Redis armazene um grande número de scripts Lua e consuma mais memória. Para mitigar isso, certifique-se de que todos os scripts Lua sejam parametrizados e executados regularmente SCRIPT FLUSH para limpar scripts Lua em cache, se necessário.

O exemplo a seguir mostra como usar scripts parametrizados: Primeiro, temos um exemplo de uma abordagem não parametrizada que resulta em três scripts Lua em cache diferentes e não é recomendada:

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

Em vez disso, use o seguinte padrão para criar um único script capaz de aceitar parâmetros passados:

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 longa duração

Os scripts Lua podem executar vários comandos atomicamente, portanto, podem levar mais tempo para serem concluídos do que um comando normal do Valkey ou do RedisOSS. Se o script Lua só executar operações somente leitura, você poderá pará-lo no meio. No entanto, assim que executa uma operação de gravação, o script Lua se torna imortal e deve ser executado até a conclusão. Um script Lua de longa execução que está sofrendo mutação pode fazer com que o OSS servidor Valkey ou Redis pare de responder por muito tempo. Para mitigar esse problema, evite scripts Lua de longa duração e teste o script em um ambiente de pré-produção.

Script Lua com gravações furtivas

Há algumas maneiras pelas quais um script Lua pode continuar gravando novos dados no Valkey ou no Redis, OSS mesmo quando o Valkey ou o OSS Redis terminarem: maxmemory

  • O script começa quando o OSS servidor Valkey ou Redis está abaixo maxmemory e contém várias operações de gravação dentro

  • O primeiro comando de gravação do script não está consumindo memória (comoDEL), seguido por mais operações de gravação que consomem memória

  • Você pode mitigar esse problema configurando uma política de despejo adequada no servidor Valkey ou Redis, exceto. OSS noeviction Isso permite que o Redis OSS expulse itens e libere memória entre os scripts Lua.