Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 29611|Atsakyti: 2

[Redis] Redis naudoja Lua scenarijus išsamiems paaiškinimams

[Kopijuoti nuorodą]
Paskelbta 2021-04-30 15:42:57 | | | |
Kalbant apie redis, visi dažnai juo naudojasi, o dažniausiai naudojamas scenarijus yra duomenų talpykla.

Peržiūra

Redis patvarumo skirtumas tarp RDB ir AOF
https://www.itsvse.com/thread-9555-1-1.html

"Docker" diegimas paleidžia "Redis" talpyklą
https://www.itsvse.com/thread-8995-1-1.html

Pavyzdžiai paaiškina, kas yra "Redis" talpyklos įsiskverbimas, talpyklos lavina ir talpyklos suskirstymas
https://www.itsvse.com/thread-8968-1-1.html

Redis pakaitos simboliai, kad būtų galima masiškai ištrinti raktus
https://www.itsvse.com/thread-7957-1-1.html

"CentOS 7" diegimo "Redis 5.0.3" pamoka
https://www.itsvse.com/thread-7201-1-1.html

Įdiekite redis plėtinį pagal php 5.5.7 pagal CentOS
https://www.itsvse.com/thread-7200-1-1.html

Kiek raktų galima saugoti redis egzemplioriuje ir kokie yra maksimalūs raktai bei reikšmės?
https://www.itsvse.com/thread-6848-1-1.html

Redis kinų kalbos klausimas negali būti tinkamai rodomas
https://www.itsvse.com/thread-5032-1-1.html

Redis įgalina nuotolinę prieigą
https://www.itsvse.com/thread-5011-1-1.html

"Windows" nepavyksta paleisti "Redis" paslaugos, klaida 1067: procesas netikėtai nutraukiamas.
https://www.itsvse.com/thread-5010-1-1.html

CentOS įdiegta Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis nustato nuotolinį ryšį ir prieigos slaptažodžius
https://www.itsvse.com/thread-4101-1-1.html

Redis ištuština duomenų talpyklą
https://www.itsvse.com/thread-4027-1-1.html

Redis patvarumo konfigūracija ir išjungimo patvarumo konfigūracija
https://www.itsvse.com/thread-4012-1-1.html

Skirtumas tarp išsaugoti ir bgsave in redis
https://www.itsvse.com/thread-4010-1-1.html

Redis du patvarumo metodai ir principai
https://www.itsvse.com/thread-4009-1-1.html

Redis turi tris būdus pradėti
https://www.itsvse.com/thread-4008-1-1.html

Redis komandų eilutės langų slėpimo metodas
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash vertės problema
https://www.itsvse.com/thread-2587-1-1.html

5 dalykai, kuriuos turite žinoti prieš naudodami Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis pakeičia numatytąjį prievado numerį ir nustato prieigos slaptažodį
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64 bitų atsisiuntimas, oficialus atsisiuntimo adresas
https://www.itsvse.com/thread-2576-1-1.html
Pradedant nuo redis 2.6.0, redis turi įmontuotą Lua vertėją ir pateikia eval komandą Lua scenarijaus vertinimui analizuoti.

Sintaksė: eval script numkeys keys args

Parametrai:

eval — Redis pateikia komandas lua scenarijui analizuoti

Scenarijus — Lua Script

numkeys — nurodo raktų skaičių keyname parametrų rinkinyje

keys — keyname parametrų rinkinys, vaizduojamas visuotinio kintamojo KEYS masyvu, prasidedančiu 1 indeksu

args — rakto reikšmės parametrų rinkinys, vaizduojamas globalių kintamųjų masyvu ARGV, prasidedančiu indeksu 1


"Lua" naudojimo "Redis" privalumai

Sumažinkite tinklo pridėtines išlaidas. Kelios užklausos gali būti siunčiamos vienu metu scenarijų pavidalu, kad būtų sumažinta tinklo delsa
Atominis manipuliavimas. Redis vykdys visą scenarijų kaip visumą, be jokių kitų komandų. Todėl scenarijų kūrimo metu nereikia jaudintis dėl lenktynių sąlygų ir sandorių.
Atstatytas. Kliento siunčiami žingsniai nuolat saugomi redis, kad kiti klientai galėtų pakartotinai naudoti scenarijų nenaudodami kodo tai pačiai logikai užbaigti.

Scenarijaus atomiškumas

Lua scenarijai negali turėti daug laiko reikalaujančių operacijų ar negyvų kilpų, kitaip redis nepriims kitų komandų ir vykdys, kad sustabdytų scenarijaus veikimą

Redis naudoja vieną Lua interpretatorių visiems scenarijams vykdyti ir užtikrina, kad scenarijai būtų vykdomi atomiškai.Tai reiškia, kad kai scenarijus veikia, nebus vykdomi jokie kiti scenarijai ar redis komandos! Todėl, jei dabartinis scenarijus veikia lėtai, serveris gali negalėti vykdyti komandos, nes jis užimtas, pvz.:

Kiekvienas scenarijus turi maksimalų vykdymo laiko limitą, numatytoji reikšmė yra 5s. Maksimalus vykdymo laikas valdomas konfigūracijos failo redis.conf lua-time-limit parinktimi arba tiesiogiai naudojant config get ir config set komandas. Kai scenarijaus vykdymas pasiekia maksimalų vykdymo laiką, "Redis" jo aktyviai nenutraukia, atlieka šiuos veiksmus:

(1) Redis įrašo, kad scenarijui baigiasi laikas

(2) Redis pradeda iš naujo priimti užklausas iš kitų klientų, bet priima tik scenarijaus nužudymo komandų vykdymą ir išjungimą nosave.

(3) Jei scenarijus atlieka tik skaitymo operacijas, naudokite scenarijaus nužudymo komandą, kad nedelsdami sustabdytumėte scenarijų; Jei scenarijus atlieka įrašymo operaciją, serverį gali sustabdyti tik išjungimo įrašymo / neįrašymo komanda, kad dabartiniai duomenys nebūtų įrašomi į diską. (Šiuo metu serveris neveikia ir duomenys nebus išsaugoti)


pavyzdys

Vykdykite scenarijų, parametrai yra 2 raktas ir reikšmė, o komanda yra tokia:


Deadloop scenarijai, vykdant šį scenarijų, redis negalės apdoroti kitų komandų ir įstrigs:

Pabandykite naudoti scenarijų, kad įtrauktumėte eilutės tipo duomenis naudodami šią komandą:

Vykdykite keletą sudėtingesnių scenarijų, jei rakto vertė yra lygi vertei, kurią perdavėme, tada ištrinkite talpyklą, kitaip darykite bet ką, komanda yra tokia:

Įgyvendinimo rezultatai yra šie:



(Pabaiga)




Ankstesnis:.NET/C# užrakto principo monitorius pateikia išsamų paaiškinimą
Kitą:IIS DELETE PUT užklausa 405 sprendimas
 Savininkas| Paskelbta 2021-05-10 09:18:34 |

Hipersaito prisijungimas matomas.
Komanda "Redis Script Load" naudojama scenarijui pridėti prie scenarijaus talpyklos, tačiau ji nevykdoma iš karto.

EVAL komanda taip pat prideda scenarijų prie scenarijaus talpyklos, tačiau ji iš karto įvertina įvesties scenarijų.

Jei pateiktas scenarijus jau yra talpykloje, jokių veiksmų nesiimama.

Įtraukus scenarijų į talpyklą, scenarijų galima iškviesti naudojant scenarijaus SHA1 kontrolinę sumą per komandą EVALSHA. (Tai taip pat reiškia.)Tas pats scenarijus vykdo tą pačią sha1 reikšmę bet kuriame skirtingame redis serveryje

Scenarijai gali likti talpykloje neribotą laiką, kol bus įvykdytas SCRIPT FLUSH.



 Savininkas| Paskelbta 2021-05-12 11:38:55 |
Nustatykite, ar lua scenarijus yra talpykloje


Kai Redis paleidžiamas iš naujo, Lua scenarijus automatiškai išvalomas, nebus nuolatinis

Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com