Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 29611|Válasz: 2

[Redis] Redis Lua szkripteket használ részletes magyarázatokhoz

[Linket másol]
Közzétéve 2021. 04. 30. 15:42:57 | | | |
A redis-t illetően mindenki gyakran használja, és a leggyakrabban használt forgatókönyv az adatgyorsítótár.

szemle

Redis tartóssági különbség az RDB és az AOF között
https://www.itsvse.com/thread-9555-1-1.html

A Docker telepítés futtatja a Redis gyorsítótárt
https://www.itsvse.com/thread-8995-1-1.html

Példák magyarázzák el, hogy mi a Redis cache penetráció, a cache lavina és a cache breakdown
https://www.itsvse.com/thread-8968-1-1.html

Redis wildcard-ja, hogy nagy tételben töröld a kulcsokat
https://www.itsvse.com/thread-7957-1-1.html

CentOS 7 telepítése Redis 5.0.3 oktató
https://www.itsvse.com/thread-7201-1-1.html

Telepítsd a redis kiterjesztést php 5.5.7 alá CentOS alatt
https://www.itsvse.com/thread-7200-1-1.html

Hány kulcsot lehet tárolni egy redis példányban, és mik a maximális kulcsok és értékek?
https://www.itsvse.com/thread-6848-1-1.html

A redis Chinese kiadása nem mutatható megfelelően
https://www.itsvse.com/thread-5032-1-1.html

A Redis lehetővé teszi a távoli hozzáférést
https://www.itsvse.com/thread-5011-1-1.html

A Windows nem indítja el a Redis szolgáltatást, 1067-es hiba: A folyamat váratlanul leáll.
https://www.itsvse.com/thread-5010-1-1.html

CentOS telepítette a Redis 4.0.8-at
https://www.itsvse.com/thread-4614-1-1.html

A Redis távoli kapcsolatot és hozzáférési jelszavakat állít be
https://www.itsvse.com/thread-4101-1-1.html

Redis kiüríti az adatgyorsítótárt
https://www.itsvse.com/thread-4027-1-1.html

Redis persistence konfiguráció és kikapcsolt persistenciát
https://www.itsvse.com/thread-4012-1-1.html

A különbség a mentés és a bgsave között a Redis
https://www.itsvse.com/thread-4010-1-1.html

A Redis két kitartási módszer és elv
https://www.itsvse.com/thread-4009-1-1.html

Redis három módja van a kezdésnek.
https://www.itsvse.com/thread-4008-1-1.html

Redis módszer a parancssoros ablakok elrejtésére
https://www.itsvse.com/thread-2988-1-1.html

Redis hash hash hash érték probléma
https://www.itsvse.com/thread-2587-1-1.html

5 dolog, amit tudnod kell, mielőtt használod a Redist
https://www.itsvse.com/thread-2580-1-1.html

A Redis módosítja az alapértelmezett portszámot és beállítja a hozzáférési jelszót
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bites letöltés, hivatalos letöltési cím
https://www.itsvse.com/thread-2576-1-1.html
A redis 2.6.0-tól kezdve a redis beépített Lua értelmezővel rendelkezik, amely egy értékelési parancsot biztosít a Lua szkript értékelésének elemzéséhez.

Syntax: eval script numkeys keys args

Paraméterek:

értékelés — A Redis parancsokat ad a lua szkriptének elemzéséhez

Forgatókönyv — Lua Script

numkeys — Megadja a kulcsnév paraméterkészletben lévő kulcsok számát

kulcsok — A kulcsnév paraméterhalmaz, amelyet a globális változó KEYS tömbben jelöl, amely egy indexindexkel kezdődik

args — Kulcsérték-paraméterek halmaza, amelyet egy ARGV globális változók tömbje képvisel, amely 1-es indexkel kezdődik


A Lua használatának előnyei a Redis színben

Csökkentse a hálózati terhelést. Egyszerre több kérést is küldhetünk szkriptek formájában, hogy csökkentsék a hálózati késleltetést
Atommanipuláció. A Redis az egész szkriptet, nem illetne más parancsokat közé. Ezért nem kell aggódni a versenyfeltételek és tranzakciók miatt a szkripteljárás során.
Visszaállították. A kliens által küldött lépések folyamatosan redisben vannak tárolva, hogy más kliensek újra felhasználhassák a szkriptet, anélkül, hogy kódot kellene használniuk ugyanazon logika befejezéséhez.

Írás atomisága

A Lua szkripteknek nem lehetnek időigényes műveletek vagy halott hurok, különben a redis nem fogad el más parancsokat, és nem hajtja végre a script futtatását

A Redis egyetlen Lua értelmezőt használ az összes szkripthez, és biztosítja, hogy a szkriptek atomiszerűen legyenek végrehajtva.Ez azt jelenti, hogy amikor egy szkript fut, nem hajtanak végre más szkripteket vagy redis parancsokat! Ezért, ha a jelenlegi szkript lassan fut, a szerver nem tudja végrehajtani a parancsot, mert az foglalt, például:

Minden szkriptnek van maximális végrehajtási időkorláta, az alapértelmezett érték 5s. A maximális végrehajtási időt a konfigurációs fájl redis.conf lua-időkorlát opciója szabályozza, vagy közvetlenül a config get és config set parancsok használatával. Amikor egy szkript végrehajtása eléri a maximális végrehajtási időt, a Redis nem zárja meg aktívan, hanem a következő lépéseket végzi:

(1) A Redis azt rögzíti, hogy egy forgatókönyv kifut az időből

(2) A Redis elkezdi újra elfogadni más kliensek kéréseit, de csak a szkript-letiltási parancsok végrehajtását és a nosave leállítását fogadja el.

(3) Ha a szkript csak olvasási műveleteket végez, a script kill parancsot használjuk a szkript azonnali leállítására; Ha a szkript írási műveletet hajt végre, csak a leállító mentés/nosave parancs állíthatja meg a szervert, hogy megakadályozza az aktuális adatok lemezre írását. (Ekkor a szerver leáll, és az adatok nem mentődnek el)


példa

A szkriptet futtatva, a paraméterek 2 kulcs és érték, a parancs pedig a következő:


Deadloop szkriptek esetén, ha a következő szkript hajtjuk végre, a redis nem tudja más parancsokat feldolgozni, és elakad:

Próbálj meg egy szkripttel hozzáadni a típus adatsorát a következő parancsral:

Hajts végre néhány összetettebb szkriptet, ha a kulcs értéke megegyezik azzal az értékkel, amit beadtunk, akkor töröld a gyorsítótárt, vagy bármit csinálj, a parancs a következő:

A megvalósítás eredményei a következők:



(Vége)




Előző:A .NET/C# Lock Principle Monitor részletes magyarázatot nyújt
Következő:IIS DELETE PUT request 405 megoldás
 Háziúr| Közzétéve 2021. 05. 10. 9:18:34 |

A hiperlink bejelentkezés látható.
A Redis Script Load parancsot arra használják, hogy a script scriptet hozzáadják a szkriptgyorsahoz, de nem hajtják végre azonnal.

Az EVAL parancs a szkriptet is hozzáadja a szkriptgyorsítótárhoz, de azonnal értékeli a bemeneti szkriptet.

Ha a megadott szkript már a cache-ben van, akkor nem történik semmilyen intézkedés.

Miután a szkript hozzáadódik a gyorsítótárhoz, a szkript az EVALSHA parancs segítségével a szkript SHA1 ellenőrzőösszegével hívható. (Ez azt is jelenti.)Ugyanaz a szkript ugyanazt a sha1 értéket hajtja végre bármely más redis szerveren

A szkriptek végtelen ideig maradhatnak a gyorsítótárban, amíg a SCRIPT FLUSH el nem indul.



 Háziúr| Közzétéve 2021. 05. 12. 11:38:55 |
Állapítsd meg, hogy a lua szkript a gyorsítótárban van-e


A Redis újraindítása után a Lua szkript automatikusan törölhető, nem lesz állandó

Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com