În ceea ce privește redis, toată lumea îl folosește des, iar cel mai folosit scenariu este stocarea datelor în cache.
recenzie
Î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)
|