A redis-t illetően mindenki gyakran használja, és a leggyakrabban használt forgatókönyv az adatgyorsítótár.
szemle
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)
|