Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 29611|Svar: 2

[Redis] Redis bruger Lua-skrifter til detaljerede forklaringer

[Kopier link]
Opslået på 30/04/2021 15.42.57 | | | |
Med hensyn til Redis bruger alle det ofte, og det mest brugte scenarie er datacache.

anmeldelse

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

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

Eksempler forklarer, hvad Redis cache-penetration, cache-lavine og cache-breakdown er
https://www.itsvse.com/thread-8968-1-1.html

Redis-jokere til at slette nøgler i bulk
https://www.itsvse.com/thread-7957-1-1.html

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

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

Hvor mange nøgler kan gemmes i en redis-instans, og hvad er de maksimale nøgler og værdier?
https://www.itsvse.com/thread-6848-1-1.html

Udgivelsen af redis-kinesisk kan ikke vises korrekt
https://www.itsvse.com/thread-5032-1-1.html

Redis muliggør fjernadgang
https://www.itsvse.com/thread-5011-1-1.html

Windows kan ikke starte Redis-tjenesten, fejl 1067: Processen afsluttes uventet.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis opretter fjernforbindelse og adgangsadgangskoder
https://www.itsvse.com/thread-4101-1-1.html

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

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

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

Der er to persistensmetoder og principper
https://www.itsvse.com/thread-4009-1-1.html

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

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

Redis Hash Hash Hash Værdi Problem
https://www.itsvse.com/thread-2587-1-1.html

5 ting du skal vide, før du bruger Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis ændrer standardportnummeret og sætter adgangskoden
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit download, officiel downloadadresse
https://www.itsvse.com/thread-2576-1-1.html
Fra og med redis 2.6.0 har redis en indbygget Lua-fortolker og giver en evalueringskommando til at parse Lua-scriptets evaluering.

Syntaks: eval-script numkeys keys args

Parametre:

eval — Redis giver kommandoer til at parse lua-skriften

Manuskript — Lua-manuskript

numkeys — Angiver antallet af nøgler i nøglenavnsparametersættet

keys — Nøglenavnets parametersætt, repræsenteret ved det globale variabelarray KEYS, startende med et indeks på 1

args — Et sæt nøgleværdiparametre, repræsenteret ved et array af globale variable ARGV, begyndende med et indeks på 1


Fordele ved at bruge Lua i Redis

Reducer netværksoverhead. Flere forespørgsler kan sendes på én gang i form af scripts for at reducere netværkslatens
Atommanipulation. Redis vil udføre hele scriptet som en helhed, uden andre kommandoer indsat imellem. Derfor er der ingen grund til at bekymre sig om racebetingelser og transaktioner under scripting-processen.
Genindsat. De fodtrin, klienten sender, gemmes vedvarende i redis, så andre klienter kan genbruge scriptet uden at skulle bruge kode til at fuldføre den samme logik.

Skriftatomicitet

Lua-scripts kan ikke have tidskrævende operationer eller døde løkker, ellers vil redis ikke acceptere andre kommandoer og udføre for at stoppe scriptet

Redis bruger en enkelt Lua-fortolker til at køre alle scripts og sikrer, at scripts udføres atomisk.Det betyder, at når et script kører, vil ingen andre scripts eller redis-kommandoer blive udført! Derfor, hvis det nuværende script kører langsomt, kan serveren muligvis ikke udføre kommandoen, fordi den er optaget, for eksempel:

Hvert script har en maksimal eksekveringstidsgrænse, standardværdien er 5 sekunder. Den maksimale eksekveringstid styres af lua-time-limit-muligheden i konfigurationsfilen redis.conf, eller direkte ved at bruge config get og config set-kommandoerne. Når en scriptudførelse når sin maksimale eksekveringstid, afslutter Redis det ikke aktivt, men udfører følgende trin:

(1) Redis noterer, at et manuskript er ved at løbe tør for tid

(2) Redis begynder at genacceptere anmodninger fra andre klienter, men accepterer kun udførelsen af script kill-kommandoer og nedlukning af nosave.

(3) Hvis scriptet kun udfører læseoperationer, brug script kill-kommandoen til straks at stoppe scriptet; Hvis scriptet udfører en skriveoperation, er det kun shutdown save/nosave-kommandoen, der må stoppe serveren for at forhindre, at de aktuelle data bliver skrevet til disken. (På dette tidspunkt er serveren nede, og dataene vil ikke blive gemt)


eksempel

Udfør scriptet, parametrene er 2 nøgler og værdi, og kommandoen er som følger:


Deadloop-scripts, hvis du udfører følgende script, vil redis ikke kunne behandle andre kommandoer og sidde fast:

Prøv at bruge et script til at tilføje data af typestrengen med følgende kommando:

Udfør nogle mere komplekse scripts, hvis nøglens værdi er lig med den værdi, vi sendte ind, så slet cachen, ellers gør du hvad som helst, kommandoen er som følger:

Resultaterne af implementeringen er som følger:



(Slut)




Tidligere:.NET/C# Lock Principle Monitor giver en dybdegående forklaring
Næste:IIS DELETE PUT anmodning 405-løsning
 Udlejer| Opslået på 10/05/2021 09.18.34 |

Hyperlink-login er synlig.
Redis Script Load-kommandoen bruges til at tilføje scriptscript til scriptcachen, men den udføres ikke med det samme.

EVAL-kommandoen tilføjer også scriptet til scriptcachen, men den evaluerer input-scriptet med det samme.

Hvis det givne script allerede er i cachen, udføres der ingen handling.

Efter at scriptet er tilføjet cachen, kan scriptet kaldes ved hjælp af scriptets SHA1-checksum via EVALSHA-kommandoen. (Det betyder også.)Det samme script udfører den samme sha1-værdi på enhver anden redis-server

Scripts kan forblive i cachen i uendelig tid, indtil SCRIPT FLUSH udføres.



 Udlejer| Opslået på 12/05/2021 11.38.55 |
Bestem om lua-scriptet er i cachen


Efter Redis genstarter, bliver Lua-scriptet automatisk ryddet, vil ikke være permanent

Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com