Redisin osalta kaikki käyttävät sitä usein, ja yleisin käyttötapa on datan välimuisti.
arvostelu
Redis 2.6.0:sta alkaen Redis sisältää sisäänrakennetun Lua-tulkin ja tarjoaa arviointikomennon Lua-skriptin arvioinnin jäsentämiseen.
Syntaksi: eval script numkeys keys args
Parametrit:
arviointi — Redis antaa komentoja lua-skriptin jäsentämiseen
Käsikirjoitus — Lua Script
numkeys — Määrittää avainten määrän keyname-parametrijoukossa
keys — Avainnimiparametrijoukko, joka esitetään globaalina muuttujana KEYS-taulukkona, alkaen alaindeksillä 1
args — Avainarvoparametrien joukko, joka esitetään globaalien muuttujien ARGV-taulukolla, alkaen alaindeksillä 1
Luan käytön edut Redisissä
Vähennä verkon ylikuormitusta. Useita pyyntöjä voidaan lähettää samanaikaisesti skriptien muodossa verkon viiveen vähentämiseksi Atomimanipulaatio. Redis suorittaa koko skriptin kokonaisuutena, eikä väliin lisätä muita komentoja. Siksi ei tarvitse huolehtia kilpailun olosuhteista ja tapahtumista skriptausprosessin aikana. Palautettu. Asiakkaan lähettämät askeleet tallennetaan jatkuvasti redisiin, jotta muut asiakkaat voivat käyttää skriptiä uudelleen ilman, että heidän tarvitsee käyttää koodia saman logiikan suorittamiseen.
Kirjoitusatomisuus
Lua-skriptit eivät voi sisältää aikaa vieviä operaatioita tai kuolleita silmukoita, muuten Redis ei hyväksy muita komentoja ja suorita skriptin pysäyttämiseksi
Redis käyttää yhtä Lua-tulkkia kaikkien skriptien suorittamiseen ja varmistaa, että skriptit suoritetaan atomisesti.Tämä tarkoittaa, että skriptin ollessa käynnissä muita skriptejä tai redis-komentoja ei suoriteta! Siksi, jos nykyinen skripti toimii hitaasti, palvelin ei välttämättä pysty suorittamaan komentoa, koska se on kiireinen, kuten:
Jokaisella skriptillä on maksimisuoritusaikaraja, oletusarvo on 5s. Maksimisuoritusaikaa ohjaa konfiguraatiotiedoston redis.conf lua-aikaraja-vaihtoehto tai suoraan config get- ja config set -komennoilla. Kun skriptin suoritus saavuttaa maksimisuoritusajan, Redis ei aktiivisesti lopeta sitä, vaan suorittaa seuraavat vaiheet:
(1) Redis kirjaa, että käsikirjoitus alkaa käydä vähiin
(2) Redis alkaa hyväksyä pyyntöjä uudelleen muilta asiakkailta, mutta hyväksyy vain skriptin tappokäskyjen suorittamisen ja nosaven sammuttamisen.
(3) Jos skripti suorittaa vain lukutoimintoja, käytä skriptin tappokäskyä pysäyttääksesi skriptin välittömästi; Jos skripti suorittaa kirjoitusoperaation, vain shutdown save/nosave -komento saa pysäyttää palvelimen estääkseen nykyisen datan kirjoittamisen levylle. (Tässä vaiheessa palvelin on poissa käytöstä eikä dataa tallenneta)
esimerkki
Suorita skripti, parametrit ovat 2 avainta ja arvoa, ja komento on seuraava:
Deadloop-skripteissä seuraavan skriptin suorittaminen aiheuttaa sen, ettei Redis pysty käsittelemään muita komentoja ja jää jumiin:
Kokeile käyttää skriptiä lisätäksesi tyyppimerkkijonon dataa seuraavalla komennolla:
Suorita monimutkaisempia skriptejä, jos avaimen arvo vastaa syötettyä arvoa, poista välimuisti, muuten tee mitä tahansa, komento on seuraava:
Toteutuksen tulokset ovat seuraavat:
(Loppu)
|