Attiecībā uz redis visi to bieži izmanto, un visbiežāk izmantotais scenārijs ir datu kešatmiņa.
Pārskats
Sākot ar redis 2.6.0, redis ir iebūvēts Lua tulks un nodrošina eval komandu, lai parsētu Lua skripta novērtējumu.
Sintakse: eval script numkeys keys args
Parametri:
eval — Redis nodrošina komandas, lai parsētu lua skriptu
Skripts - Lua skripts
numkeys — norāda atslēgu skaitu keyname parametru kopā
keys — keyname parametru kopa, ko attēlo globālais mainīgais KEYS masīvs, sākot ar apakšrakstu 1
args — atslēgas-vērtības parametru kopa, ko attēlo globālo mainīgo masīvs ARGV, sākot ar apakšrakstu 1
Lua lietošanas priekšrocības Redis
Samaziniet tīkla pieskaitāmās izmaksas. Vairākus pieprasījumus var nosūtīt uzreiz skriptu veidā, lai samazinātu tīkla latentumu Atomu manipulācijas. Redis izpildīs visu skriptu kopumā, starp tām neievietojot citas komandas. Tāpēc skriptēšanas procesa laikā nav jāuztraucas par sacensību apstākļiem un darījumiem. Atjaunots. Klienta nosūtītie soļi tiek pastāvīgi glabāti redis, lai citi klienti varētu atkārtoti izmantot skriptu, neizmantojot kodu, lai pabeigtu to pašu loģiku.
Skripta atomiskums
Lua skriptiem nevar būt laikietilpīgas darbības vai mirušās cilpas, pretējā gadījumā redis nepieņems citas komandas un izpildīs, lai apturētu skripta darbību
Redis izmanto vienu Lua tulku, lai palaistu visus skriptus, un nodrošina, ka skripti tiek izpildīti atomiski.Tas nozīmē, ka, darbojoties skriptam, netiks izpildīti citi skripti vai redis komandas! Tāpēc, ja pašreizējais skripts darbojas lēni, serveris, iespējams, nevarēs izpildīt komandu, jo tas ir aizņemts, piemēram:
Katram skriptam ir maksimālais izpildes laika ierobežojums, noklusējuma vērtība ir 5s. Maksimālo izpildes laiku kontrolē konfigurācijas faila redis.conf lua-time-limit opcija vai tieši, izmantojot komandas config get un config set. Kad skripta izpilde sasniedz maksimālo izpildes laiku, Redis to aktīvi nepārtrauc, tas veic šādas darbības:
(1) Redis ieraksta, ka skriptam beidzas laiks
(2) Redis sāk atkārtoti pieņemt pieprasījumus no citiem klientiem, bet pieņem tikai skriptu nogalināšanas komandu izpildi un izslēgšanu nosave.
(3) Ja skripts veic tikai lasīšanas operācijas, izmantojiet skripta nogalināšanas komandu, lai nekavējoties apturētu skriptu; Ja skripts veic rakstīšanas operāciju, servera apturēšanai ir atļauts apturēt tikai izslēgšanas saglabāšanas / nesaglabāšanas komandu, lai novērstu pašreizējo datu ierakstīšanu diskā. (Šajā brīdī serveris nedarbojas un dati netiks saglabāti)
piemērs
Izpildiet skriptu, parametri ir 2 atslēga un vērtība, un komanda ir šāda:
Deadloop skripti, izpildot šādu skriptu, radīs redis nespēju apstrādāt citas komandas un iestrēgt:
Mēģiniet izmantot skriptu, lai pievienotu virknes tipa datus ar šādu komandu:
Izpildiet dažus sarežģītākus skriptus, ja atslēgas vērtība ir vienāda ar vērtību, kuru mēs nododam, pēc tam izdzēsiet kešatmiņu, pretējā gadījumā dariet kaut ko, komanda ir šāda:
Īstenošanas rezultāti ir šādi:
(Beigas)
|