Per quanto riguarda Redis, spesso lo usano tutti, e lo scenario più usato è la cache dei dati.
recensione
A partire da redis 2.6.0, redis ha un interprete Lua integrato e fornisce un comando di valutazione per analizzare la valutazione dello script Lua.
Sintassi: eval script numkeys args
Parametri:
eval — Redis fornisce comandi per analizzare lo script Lua
Script — script Lua
numkey — Specifica il numero di chiavi nell'insieme dei parametri del nome chiave
keys — Il set di parametri keyname, rappresentato dall'array globale della variabile KEYS, che inizia con un indice pari a 1
args — Un insieme di parametri chiave-valore, rappresentati da un array di variabili globali ARGV, che iniziano con un pedice pari a 1
Vantaggi dell'uso di Lua in Redis
Ridurre i costi di rete. Più richieste possono essere inviate contemporaneamente sotto forma di script per ridurre la latenza di rete Manipolazione atomica. Redis eseguirà l'intero script nel suo insieme, senza inserire altri comandi intermedi. Pertanto, non c'è bisogno di preoccuparsi delle condizioni di gara e delle transazioni durante il processo di scripting. Reintegrato. I passi inviati dal client sono memorizzati in modo persistente in redis così che altri client possano riutilizzare lo script senza dover usare codice per completare la stessa logica.
Atomicità della scrittura
Gli script Lua non possono avere operazioni lunghe o cicli morti, altrimenti Redis non accetterà altri comandi e non verrà eseguito per fermare lo script
Redis utilizza un singolo interprete Lua per eseguire tutti gli script e garantisce che gli script vengano eseguiti atomicamente.Ciò significa che quando uno script è in esecuzione, nessun altro script o comando redis verrà eseguito! Pertanto, se lo script corrente è in esecuzione lento, il server potrebbe non essere in grado di eseguire il comando perché è occupato, come ad esempio:
Ogni script ha un limite massimo di tempo di esecuzione, il valore predefinito è 5s. Il tempo massimo di esecuzione è controllato dall'opzione di limite di tempo lua del file di configurazione redis.conf, oppure direttamente utilizzando i comandi config get e config set. Quando un'esecuzione di uno script raggiunge il tempo massimo di esecuzione, Redis non la termina attivamente, ma esegue i seguenti passaggi:
(1) Redis registra che uno script sta per scadere il tempo
(2) Redis inizia ad accettare nuovamente richieste da altri client, ma accetta solo l'esecuzione dei comandi di uccisione dello script e lo spegnimento del nosave.
(3) Se lo script esegue solo operazioni di lettura, usa il comando di eliminazione dello script per fermare immediatamente lo script; Se lo script esegue un'operazione di scrittura, solo il comando shutdown save/nosave è permesso di fermare il server per impedire che i dati correnti vengano scritti sul disco. (A questo punto, il server è fuori uso e i dati non verranno salvati)
esempio
Esegui lo script, i parametri sono 2 key e value, e il comando è il seguente:
Gli script deadloop, eseguire il seguente script, farà sì che Redis non possa elaborare altri comandi e rimanga bloccato:
Prova a usare uno script per aggiungere una stringa di dati di tipo con il seguente comando:
Esegui alcuni script più complessi, se il valore della chiave è uguale al valore che abbiamo passato, poi elimina la cache, altrimenti fai qualsiasi cosa, il comando è il seguente:
I risultati dell'implementazione sono i seguenti:
(Fine)
|