Script Lua - Amazon ElastiCache

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Script Lua

Valkey e Redis OSS supportano più di 200 comandi, inclusi quelli per eseguire gli script Lua. Tuttavia, quando si tratta di script Lua, ci sono diverse insidie che possono influire sulla memoria e sulla disponibilità di Valkey o Redis. OSS

Script Lua non parametrizzati

Ogni script Lua viene memorizzato nella cache sul server Valkey o Redis prima di essere eseguito. OSS Gli script Lua non parametrizzati sono unici, il che può portare il OSS server Valkey o Redis a memorizzare un gran numero di script Lua e a consumare più memoria. Per mitigare questo problema, assicuratevi che tutti gli script Lua siano parametrizzati e che ripuliscano regolarmente gli script Lua memorizzati nella cache, se necessario. SCRIPT FLUSH

Il codice di esempio seguente mostra come utilizzare gli script parametrizzati. Innanzitutto, abbiamo un esempio di approccio non parametrizzato che non è consigliato e produce tre diversi script Lua memorizzati nella cache:

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

Utilizza invece lo schema seguente per creare un singolo script in grado di accettare i parametri passati:

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

Script Lua a esecuzione prolungata

Gli script Lua possono eseguire più comandi in modo atomico, quindi il completamento può richiedere più tempo rispetto a un normale comando Valkey o Redis. OSS Se lo script Lua esegue esclusivamente operazioni di sola lettura, puoi interromperlo a metà. Tuttavia, non appena lo script Lua esegue un'operazione di scrittura, non puoi più interromperlo e deve essere eseguito fino al completamento. Uno script Lua a esecuzione prolungata che sta mutando può far sì che il server Valkey o OSS Redis non risponda per molto tempo. Per mitigare questo problema, evita gli script Lua a esecuzione prolungata e testali in un ambiente di preproduzione.

Script Lua con scritture invisibili

Esistono alcuni modi in cui uno script Lua può continuare a scrivere nuovi dati in Valkey o Redis anche quando Valkey o Redis sono finiti: OSS OSS maxmemory

  • Lo script si avvia quando il OSS server Valkey o Redis si trova al di sotto maxmemory e contiene più operazioni di scrittura al suo interno

  • Il primo comando di scrittura dello script non consuma memoria (ad esempioDEL), seguito da altre operazioni di scrittura che consumano memoria

  • È possibile mitigare questo problema configurando una politica di sfratto adeguata in un server Valkey o Redis diverso da. OSS noeviction Ciò consente a Redis di eliminare gli oggetti e OSS liberare memoria tra gli script Lua.