Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 29611|Răspunde: 2

[Redis] Redis folosește scripturi Lua pentru explicații detaliate

[Copiază linkul]
Postat pe 30.04.2021 15:42:57 | | | |
În ceea ce privește redis, toată lumea îl folosește des, iar cel mai folosit scenariu este stocarea datelor în cache.

recenzie

Diferența de persistență Redis între RDB și AOF
https://www.itsvse.com/thread-9555-1-1.html

Instalarea Docker rulează cache-ul Redis
https://www.itsvse.com/thread-8995-1-1.html

Exemplele explică ce sunt penetrarea cache-ului Ridis, avalanșa cache-ului și decompunerea cache-ului
https://www.itsvse.com/thread-8968-1-1.html

Wildcard-uri Redis pentru a șterge cheile în masă
https://www.itsvse.com/thread-7957-1-1.html

Instalare CentOS 7 Redis 5.0.3 tutorial
https://www.itsvse.com/thread-7201-1-1.html

Instalează extensia Redis sub php 5.5.7 în CentOS
https://www.itsvse.com/thread-7200-1-1.html

Câte chei pot fi stocate într-o instanță Redis și care sunt cheile și valorile maxime?
https://www.itsvse.com/thread-6848-1-1.html

Problema redis chinezilor nu poate fi prezentată corect
https://www.itsvse.com/thread-5032-1-1.html

Redis permite accesul de la distanță
https://www.itsvse.com/thread-5011-1-1.html

Windows nu reușește să pornească serviciul Redis, eroarea 1067: Procesul se termină neașteptat.
https://www.itsvse.com/thread-5010-1-1.html

CentOS a instalat Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis setează conexiuni și parole de acces la distanță
https://www.itsvse.com/thread-4101-1-1.html

Redis golește cache-ul de date
https://www.itsvse.com/thread-4027-1-1.html

Configurarea persistenței Redis și persistența dezactivată
https://www.itsvse.com/thread-4012-1-1.html

Diferența dintre save și bgsave în redis
https://www.itsvse.com/thread-4010-1-1.html

Redis două metode și principii de persistență
https://www.itsvse.com/thread-4009-1-1.html

Redis are trei moduri de a începe
https://www.itsvse.com/thread-4008-1-1.html

Metoda Redis pentru ascunderea ferestrelor din linia de comandă
https://www.itsvse.com/thread-2988-1-1.html

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

5 lucruri pe care trebuie să le știi înainte de a folosi Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis modifică numărul portului implicit și setează parola de acces
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit download, adresa oficială de descărcare
https://www.itsvse.com/thread-2576-1-1.html
Începând cu redis 2.6.0, redis are un interpret Lua încorporat și oferă o comandă eval pentru a analiza evaluarea scriptului Lua.

Sintaxă: eval script numkeys args

Parametri:

eval — Redis oferă comenzi pentru a analiza scriptul lua

Script — Script Lua

numkeys — Specifică numărul de chei din setul parametrilor de nume chei

keys — Setul parametrilor pentru numele cheilor, reprezentat de variabila globală ARRAY-ul KEYS, începând cu un indice 1

args — Un set de parametri cheie-valoare, reprezentați printr-un tablou de variabile globale ARGV, începând cu un indice 1


Avantajele utilizării Lua în Redis

Reducerea costurilor de rețea. Mai multe cereri pot fi trimise simultan sub formă de scripturi pentru a reduce latența rețelei
Manipulare atomică. Redis va executa întregul script ca întreg, fără alte comenzi inserate între ele. Prin urmare, nu este nevoie să vă faceți griji pentru condițiile de cursă și tranzacțiile în timpul procesului de scriptare.
Reinstalat. Pașii trimiși de client sunt stocați persistent în redis astfel încât alți clienți să poată reutiliza scriptul fără a folosi cod pentru a finaliza aceeași logică.

Atomicitatea scrierii

Scripturile Lua nu pot avea operații consumatoare de timp sau bucle moarte, altfel redis nu va accepta alte comenzi și nu va rula pentru a opri rularea scriptului

Redis folosește un singur interpret Lua pentru a rula toate scripturile și asigură că acestea sunt executate atomic.Aceasta înseamnă că atunci când un script rulează, nu vor fi executate alte scripturi sau comenzi redis! Prin urmare, dacă scriptul curent rulează lent, serverul s-ar putea să nu poată executa comanda deoarece este ocupat, de exemplu:

Fiecare script are o limită maximă de timp de execuție, valoarea implicită fiind 5s. Timpul maxim de execuție este controlat de opțiunea de limită de timp lua a fișierului de configurare redis.conf sau direct prin utilizarea comenzilor config get și config set. Când o execuție de script atinge timpul maxim de execuție, Redis nu o termină activ, ci execută următorii pași:

(1) Redis consemnează că un script se scurge fără timp

(2) Redis începe să re-accepte cereri de la alți clienți, dar acceptă doar executarea comenzilor de oprire a scriptului și oprirea nosave-ului.

(3) Dacă scriptul efectuează doar operații de citire, folosește comanda de oprire a scriptului pentru a opri imediat scriptul; Dacă scriptul efectuează o operațiune de scriere, doar comanda shutdown save/nosave este permisă să oprească serverul pentru a împiedica scrierea datelor curente pe disc. (În acest moment, serverul este căzut și datele nu vor fi salvate)


exemplu

Execută scriptul, parametrii sunt 2 cheie și valoare, iar comanda este următoarea:


Scripturile deadloop, executarea următorului script va face ca redis să nu poată procesa alte comenzi și să rămână blocat:

Încearcă să folosești un script pentru a adăuga un șir de date de tip cu următoarea comandă:

Execută câteva scripturi mai complexe, dacă valoarea cheii este egală cu valoarea pe care am trecut-o, apoi șterge cache-ul, altfel fă ceva, comanda este următoarea:

Rezultatele implementării sunt următoarele:



(Sfârșit)




Precedent:.NET/C# Monitor de principiu de blocare oferă o explicație detaliată
Următor:IIS ȘTERGE soluția cererii PUT 405
 Proprietarul| Postat pe 10.05.2021 09:18:34 |

Autentificarea cu hyperlink este vizibilă.
Comanda Redis Script Load este folosită pentru a adăuga script în cache-ul de scripturi, dar nu este executată imediat.

Comanda EVAL adaugă, de asemenea, scriptul în cache-ul scriptului, dar evaluează imediat scriptul de intrare.

Dacă scriptul dat este deja în cache, atunci nu se ia nicio acțiune.

După ce scriptul este adăugat în cache, acesta poate fi apelat folosind suma de verificare SHA1 a scriptului prin comanda EVALSHA. (Asta înseamnă și.)Același script execută aceeași valoare sha1 pe orice alt server redis

Scripturile pot rămâne în cache pentru o perioadă infinită de timp până când SCRIPT FLUSH este executat.



 Proprietarul| Postat pe 12.05.2021 11:38:55 |
Determină dacă scriptul lua este în cache


După ce Redis repornește, scriptul Lua este șters automat, nu va fi permanent

Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com