Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 29611|Odgovoriti: 2

[Redis] Redis uporablja pisavo Lua za podrobne razlage

[Kopiraj povezavo]
Objavljeno na 30. 04. 2021 15:42:57 | | | |
Kar zadeva Redis, ga pogosto uporabljajo vsi, najbolj uporabljen scenarij pa je predpomnjenje podatkov.

pregled

Razlika v vztrajnosti med RDB in AOF v Redisu
https://www.itsvse.com/thread-9555-1-1.html

Dockerjeva namestitev izvaja predpomnilnik Redis
https://www.itsvse.com/thread-8995-1-1.html

Primeri pojasnjujejo, kaj so preboj v Redis predpomnilnik, plaz predpomnilnika in razpad predpomnilnika
https://www.itsvse.com/thread-8968-1-1.html

Redis wildcards za množično brisanje ključev
https://www.itsvse.com/thread-7957-1-1.html

Namestitev CentOS 7 Redis 5.0.3 vodič
https://www.itsvse.com/thread-7201-1-1.html

Namestite razširitev redis pod php 5.5.7 pod CentOS
https://www.itsvse.com/thread-7200-1-1.html

Koliko ključev je mogoče shraniti v redis instanci in kakšne so največje številke ključev in vrednosti?
https://www.itsvse.com/thread-6848-1-1.html

Vprašanje redis Chinese ni mogoče pravilno prikazati
https://www.itsvse.com/thread-5032-1-1.html

Redis omogoča oddaljen dostop
https://www.itsvse.com/thread-5011-1-1.html

Windows ne uspe zagnati storitve Redis, napaka 1067: Proces se nepričakovano zaključi.
https://www.itsvse.com/thread-5010-1-1.html

CentOS je namestil Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis vzpostavi gesla za oddaljeno povezavo in dostop
https://www.itsvse.com/thread-4101-1-1.html

Redis izprazni podatkovni predpomnilnik
https://www.itsvse.com/thread-4027-1-1.html

Konfiguracija obstojnosti in izklopljena obstojnost v Redis
https://www.itsvse.com/thread-4012-1-1.html

Razlika med shranjevanjem in bgsave v redis
https://www.itsvse.com/thread-4010-1-1.html

Redis sta dve metodi in principi vztrajnosti
https://www.itsvse.com/thread-4009-1-1.html

Redis ima tri načine za začetek
https://www.itsvse.com/thread-4008-1-1.html

Redisova metoda za skrivanje oken ukazne vrstice
https://www.itsvse.com/thread-2988-1-1.html

Problem zgoščene zgošščevalne vrednosti Redisove zgoščene vrednosti
https://www.itsvse.com/thread-2587-1-1.html

5 stvari, ki jih morate vedeti, preden uporabite Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis spremeni privzeto številko vrat in nastavi dostopno geslo
https://www.itsvse.com/thread-2577-1-1.html

Redis za prenos Windows 64-bit, uradni naslov za prenos
https://www.itsvse.com/thread-2576-1-1.html
Od redis 2.6.0 naprej ima redis vgrajen interpreter Lua in zagotavlja ukaz eval za analizo ocenjevanja Lua pisave.

Sintaksa: eval script numkeys keys args

Parametri:

eval — Redis zagotavlja ukaze za razčlenjevanje lua skripte

Skripta — Lua Skripta

numkeys — Določa število ključev v naboru parametrov imen ključev

keys — Množica parametrov imena ključev, predstavljena z globalno spremenljivko KEYS, ki se začne s indeksom 1

args — Množica parametrov ključ-vrednost, predstavljena z nizom globalnih spremenljivk ARGV, ki se začnejo s spodnjim indeksom 1


Prednosti uporabe Lua v Redis

Zmanjšajte obremenitev omrežja. Več zahtevkov je mogoče poslati hkrati v obliki skript za zmanjšanje omrežne zakasnitve
Atomska manipulacija. Redis izvede celoten skript kot celoto, brez dodatnih ukazov vmes. Zato ni treba skrbeti za pogoje dirk in transakcije med procesom skriptiranja.
Ponovno sprejet. Koraki, ki jih pošlje odjemalec, se trajno shranjujejo v redisu, da lahko drugi odjemalci ponovno uporabijo skripto brez potrebe po uporabi kode za dokončanje iste logike.

Atomičnost pisave

Lua skripte ne smejo imeti časovno potratnih operacij ali mrtvih zank, sicer redis ne bo sprejel drugih ukazov in se izvedel, da ustavi zagon skripte

Redis uporablja en sam Lua interpreter za izvajanje vseh skript in zagotavlja, da se skripte izvajajo atomsko.To pomeni, da se med izvajanjem skripte ne izvajajo nobeni drugi skripti ali redis ukazi! Zato, če trenutni skript teče počasi, strežnik morda ne bo mogel izvesti ukaza, ker je zaseden, na primer:

Vsaka skripta ima največji časovni limit izvajanja, privzeta vrednost je 5s. Največji čas izvajanja je nadzorovan z možnostjo časovne omejitve lua v konfiguracijski datoteki redis.conf ali neposredno z uporabo ukazov config get in config set. Ko izvajanje skripte doseže največji čas izvajanja, ga Redis ne prekine aktivno, temveč izvede naslednje korake:

(1) Redis beleži, da skripta zmanjkuje časa

(2) Redis začne ponovno sprejemati zahteve drugih odjemalcev, vendar sprejema le izvajanje ukazov za ukinitev skripte in izklop nosave.

(3) Če skripta izvaja samo operacije branja, uporabite ukaz za ukinitev skripte, da takoj ustavite skripto; Če skripta izvede operacijo pisanja, je dovoljen le ukaz za zaustavitev shranjevanja/brez shranjevanja, ki ustavi strežnik in prepreči zapis trenutnih podatkov na disk. (V tem trenutku je strežnik nedosegljiv in podatki ne bodo shranjeni)


primer

Izvedite skripto, parametri so 2 ključ in vrednost, ukaz pa je naslednji:


Deadloop skripte, izvajanje naslednjega skripta povzroči, da redis ne more obdelovati drugih ukazov in se zatakne:

Poskusite uporabiti skripto za dodajanje podatkov tipa niz z naslednjim ukazom:

Izvedite nekaj bolj zapletenih skript, če je vrednost ključa enaka vrednosti, ki smo jo prenesli, nato izbrišite predpomnilnik, sicer naredite karkoli, ukaz je naslednji:

Rezultati izvedbe so naslednji:



(Konec)




Prejšnji:.NET/C# Lock Principle Monitor ponuja poglobljeno razlago
Naslednji:IIS DELETE PUT request 405 rešitev
 Najemodajalec| Objavljeno na 10. 05. 2021 09:18:34 |

Prijava do hiperpovezave je vidna.
Ukaz Redis Script Load se uporablja za dodajanje script script v predpomnilnik skript, vendar se ne izvede takoj.

Ukaz EVAL prav tako doda skripto v predpomnilnik skripte, vendar takoj oceni vhodno skripto.

Če je dani skript že v predpomnilniku, se ne izvede nobena akcija.

Ko je skripta dodana v predpomnilnik, jo je mogoče poklicati z uporabo SHA1 kontrolne vsote skripte preko ukaza EVALSHA. (To pomeni tudi.)Isti skript izvaja isto vrednost sha1 na katerem koli drugem redis strežniku

Skripte lahko ostanejo v predpomnilniku neskončno dolgo, dokler se ne izvede SCRIPT FLUSH.



 Najemodajalec| Objavljeno na 12. 05. 2021 11:38:55 |
Ugotovite, ali je lua skripta v predpomnilniku


Po ponovnem zagonu Redisa se skripta Lua samodejno izbriše, ne bo trajno

Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com