Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 29611|Risposta: 2

[Redis] Redis utilizza script Lua per spiegazioni dettagliate

[Copiato link]
Pubblicato su 30/04/2021 15:42:57 | | | |
Per quanto riguarda Redis, spesso lo usano tutti, e lo scenario più usato è la cache dei dati.

recensione

Differenza di persistenza di Redis tra RDB e AOF
https://www.itsvse.com/thread-9555-1-1.html

L'installazione Docker esegue la cache Redis
https://www.itsvse.com/thread-8995-1-1.html

Gli esempi spiegano cosa sono la penetrazione della cache Ridis, la valanga della cache e la rottura della cache
https://www.itsvse.com/thread-8968-1-1.html

Wildcard Redis per eliminare le chiavi in massa
https://www.itsvse.com/thread-7957-1-1.html

Tutorial per l'installazione Redis 5.0.3 di CentOS 7
https://www.itsvse.com/thread-7201-1-1.html

Installa l'estensione Redis sotto php 5.5.7 sotto CentOS
https://www.itsvse.com/thread-7200-1-1.html

Quante chiavi possono essere memorizzate in un'istanza Redis e quali sono le chiavi e i valori massimi?
https://www.itsvse.com/thread-6848-1-1.html

La questione dei cinesi redis non può essere espressa correttamente
https://www.itsvse.com/thread-5032-1-1.html

Redis consente l'accesso remoto
https://www.itsvse.com/thread-5011-1-1.html

Windows non avvia il servizio Redis, errore 1067: Il processo termina inaspettatamente.
https://www.itsvse.com/thread-5010-1-1.html

CentOS ha installato Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis imposta le password di connessione e accesso remoti
https://www.itsvse.com/thread-4101-1-1.html

Redis svuota la cache dei dati
https://www.itsvse.com/thread-4027-1-1.html

Configurazione della persistenza di Redis e persistenza off
https://www.itsvse.com/thread-4012-1-1.html

La differenza tra salvataggio e salvataggio in redis
https://www.itsvse.com/thread-4010-1-1.html

Redis due metodi e principi di persistenza
https://www.itsvse.com/thread-4009-1-1.html

Redis ha tre modi per iniziare
https://www.itsvse.com/thread-4008-1-1.html

Metodo Redis per nascondere finestre da riga di comando
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Problema del Hash Value
https://www.itsvse.com/thread-2587-1-1.html

5 cose da sapere prima di usare Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis modifica il numero di porta predefinito e imposta la password di accesso
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit download, indirizzo ufficiale del download
https://www.itsvse.com/thread-2576-1-1.html
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)




Precedente:.NET/C# Lock Principle Monitor fornisce una spiegazione approfondita
Prossimo:Soluzione 405 della richiesta IIS DELETE PUT
 Padrone di casa| Pubblicato su 10/05/2021 09:18:34 |

Il login del link ipertestuale è visibile.
Il comando Redis Script Load viene utilizzato per aggiungere uno script alla cache dello script, ma non viene eseguito immediatamente.

Il comando EVAL aggiunge anche lo script alla cache dello script, ma valuta immediatamente lo script di input.

Se lo script fornito è già nella cache, allora non viene intrapresa alcuna azione.

Dopo che lo script è stato aggiunto alla cache, lo script può essere chiamato usando il checksum SHA1 dello script tramite il comando EVALSHA. (Questo significa anche.)Lo stesso script esegue lo stesso valore sha1 su qualsiasi server redis diverso

Gli script possono rimanere nella cache per un tempo infinito fino a quando il SCRIPT FLUSH non viene eseguito.



 Padrone di casa| Pubblicato su 12/05/2021 11:38:55 |
Determina se lo script lua è nella cache


Dopo che Redis riavvia, lo script Lua viene automaticamente cancellato, non sarà permanente

Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com