Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 29611|Svare: 2

[Redis] Redis bruker Lua-skript for detaljerte forklaringer

[Kopier lenke]
Publisert på 30.04.2021 15:42:57 | | | |
Når det gjelder Redis, bruker alle det ofte, og det mest brukte scenariet er datacache.

anmeldelse

Redis-persistensforskjell mellom RDB og AOF
https://www.itsvse.com/thread-9555-1-1.html

Docker-installasjonen kjører Redis-cachen
https://www.itsvse.com/thread-8995-1-1.html

Eksempler forklarer hva Redis cache-penetrasjon, cache-lavine og cache-nedbrytning er
https://www.itsvse.com/thread-8968-1-1.html

REDIS-jokere for å slette nøkler i bulk
https://www.itsvse.com/thread-7957-1-1.html

CentOS 7 installasjon Redis 5.0.3 veiledning
https://www.itsvse.com/thread-7201-1-1.html

Installer Redis-utvidelsen under php 5.5.7 under CentOS
https://www.itsvse.com/thread-7200-1-1.html

Hvor mange nøkler kan lagres i en redis-instans, og hva er maks antall nøkler og verdier?
https://www.itsvse.com/thread-6848-1-1.html

Utgaven av redis-kinesisk kan ikke vises riktig
https://www.itsvse.com/thread-5032-1-1.html

Redis muliggjør fjernaksess
https://www.itsvse.com/thread-5011-1-1.html

Windows klarer ikke å starte Redis-tjenesten, feil 1067: Prosessen avsluttes uventet.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis setter opp fjerntilkobling og tilgangspassord
https://www.itsvse.com/thread-4101-1-1.html

Redis tømmer datacachen
https://www.itsvse.com/thread-4027-1-1.html

Redis-persistenskonfigurasjon og off-persistens
https://www.itsvse.com/thread-4012-1-1.html

Forskjellen mellom save og bgsave i redis
https://www.itsvse.com/thread-4010-1-1.html

Redis to persistensmetoder og prinsipper
https://www.itsvse.com/thread-4009-1-1.html

Redis har tre måter å starte på
https://www.itsvse.com/thread-4008-1-1.html

Redis-metoden for å skjule kommandolinjevinduer
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Verdi-problem
https://www.itsvse.com/thread-2587-1-1.html

5 ting du må vite før du bruker Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis endrer standard portnummer og setter tilgangspassordet
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bits nedlasting, offisiell nedlastingsadresse
https://www.itsvse.com/thread-2576-1-1.html
Fra og med redis 2.6.0 har redis en innebygd Lua-tolk og gir en eval-kommando for å analysere evalueringen av Lua-skriptet.

Syntaks: eval-skript numkeys keys args

Parametere:

eval — Redis gir kommandoer for å tolke lua-skriptet

Manus — Lua-manus

numkeys — Angir antall nøkler i nøkkelnavnparametersettet

keys — Nøkkelnavn-parametersettet, representert av den globale variabelen KEYS-arrayet, som starter med et indeks på 1

args — Et sett med nøkkelverdiparametere, representert av et array av globale variabler ARGV, som starter med et indeks på 1


Fordeler med å bruke Lua i Redis

Reduser nettverksoverhead. Flere forespørsler kan sendes samtidig i form av skript for å redusere nettverksforsinkelse
Atommanipulasjon. Redis vil kjøre hele skriptet som en helhet, uten andre kommandoer satt inn imellom. Derfor er det ikke nødvendig å bekymre seg for løpsbetingelser og transaksjoner under skriptprosessen.
Gjeninnsatt. Fottrinnene som sendes av klienten lagres kontinuerlig i redis slik at andre klienter kan gjenbruke skriptet uten å måtte bruke kode for å fullføre samme logikk.

Skriftatomisitet

Lua-skript kan ikke ha tidkrevende operasjoner eller døde løkker, ellers vil ikke Redis akseptere andre kommandoer og kjøre for å stoppe skriptet

Redis bruker en enkelt Lua-tolk for å kjøre alle skriptene, og sørger for at skriptene kjøres atomisk.Dette betyr at når et skript kjører, vil ingen andre skript eller redis-kommandoer bli utført! Derfor, hvis det nåværende skriptet kjører sakte, kan serveren kanskje ikke utføre kommandoen fordi den er opptatt, for eksempel:

Hvert skript har en maksimal utførelsestidsbegrensning, standardverdien er 5 sekunder. Maksimal kjøretid styres av lua-time-limit-alternativet i konfigurasjonsfilen redis.conf, eller direkte ved å bruke kommandoene config get og config set. Når en skriptkjøring når sin maksimale utførelsestid, avslutter ikke Redis det aktivt, men utfører følgende trinn:

(1) Redis registrerer at et manus er i ferd med å gå tom for tid

(2) Redis begynner å godta forespørsler fra andre klienter på nytt, men aksepterer kun utførelse av script kill-kommandoer og nedstengnings-nosave.

(3) Hvis skriptet kun utfører leseoperasjoner, bruk kommandoen script kill for å stoppe skriptet umiddelbart; Hvis skriptet utfører en skriveoperasjon, er det kun shutdown save/nosave-kommandoen som kan stoppe serveren for å forhindre at nåværende data skrives til disk. (På dette tidspunktet er serveren nede og dataene vil ikke bli lagret)


eksempel

Kjør skriptet, parameterne er 2 taster og verdi, og kommandoen er som følger:


Deadloop-skript som kjører følgende skript vil føre til at redis ikke kan behandle andre kommandoer og blir sittende fast:

Prøv å bruke et skript for å legge til data av typestrengen med følgende kommando:

Kjør noen mer komplekse skript, hvis verdien til nøkkelen er lik verdien vi sendte inn, slett cachen, ellers gjør hva som helst, kommandoen er som følger:

Resultatene av implementeringen er som følger:



(Slutt)




Foregående:.NET/C# Lock Principle Monitor gir en grundig forklaring
Neste:IIS DELETE PUT forespørsel 405-løsning
 Vert| Publisert på 10.05.2021 09:18:34 |

Innloggingen med hyperkoblingen er synlig.
Redis Script Load-kommandoen brukes til å legge til skriptskript i skriptcachen, men den utføres ikke umiddelbart.

EVAL-kommandoen legger også til skriptet i skriptcachen, men evaluerer input-skriptet umiddelbart.

Hvis det gitte skriptet allerede er i cachen, utføres ingen handling.

Etter at skriptet er lagt til i cachen, kan skriptet kalles ved hjelp av skriptets SHA1-sjekksum via EVALSHA-kommandoen. (Dette betyr også.)Det samme skriptet kjører samme sha1-verdi på en hvilken som helst annen redis-server

Skript kan forbli i cachen i uendelig lang tid til SCRIPT FLUSH er utført.



 Vert| Publisert på 12.05.2021 11:38:55 |
Finn ut om lua-skriptet er i cachen


Etter at Redis starter på nytt, slettes Lua-skriptet automatisk, vil ikke være permanent

Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com