Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 29611|Svar: 2

[Redis] Redis använder Lua-skript för detaljerade förklaringar

[Kopiera länk]
Publicerad på 2021-04-30 15:42:57 | | | |
När det gäller Redis använder alla det ofta, och det mest använda scenariot är datacache.

recension

Redis-beständighetsskillnad mellan RDB och AOF
https://www.itsvse.com/thread-9555-1-1.html

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

Exempel förklarar vad Redis cachepenetration, cache avalanche och cache breakdown är
https://www.itsvse.com/thread-8968-1-1.html

Redis-jokerkort för att ta bort nycklar i bulk
https://www.itsvse.com/thread-7957-1-1.html

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

Installera redis-tillägget under php 5.5.7 under CentOS
https://www.itsvse.com/thread-7200-1-1.html

Hur många nycklar kan lagras i en redis-instans, och vilka är maxnycklarna och värdena?
https://www.itsvse.com/thread-6848-1-1.html

Utgåvan av redis-kinesiska kan inte visas korrekt
https://www.itsvse.com/thread-5032-1-1.html

Redis möjliggör fjärråtkomst
https://www.itsvse.com/thread-5011-1-1.html

Windows kan inte starta Redis-tjänsten, fel 1067: Processen avslutas oväntat.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis upprättar fjärranslutning och åtkomstlösenord
https://www.itsvse.com/thread-4101-1-1.html

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

Redis-persistenskonfiguration och av-persistens
https://www.itsvse.com/thread-4012-1-1.html

Skillnaden mellan save och bgsave i redis
https://www.itsvse.com/thread-4010-1-1.html

Redis två persistensmetoder och principer
https://www.itsvse.com/thread-4009-1-1.html

Redis har tre sätt att börja på
https://www.itsvse.com/thread-4008-1-1.html

Redis-metoden för att dölja kommandoradsfönster
https://www.itsvse.com/thread-2988-1-1.html

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

5 saker du måste veta innan du använder Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis ändrar standardportnumret och sätter åtkomstlösenordet
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bitars nedladdning, officiell nedladdningsadress
https://www.itsvse.com/thread-2576-1-1.html
Från och med redis 2.6.0 har redis en inbyggd Lua-tolk och tillhandahåller ett utvärderingskommando för att tolka utvärderingen av Lua-skriptet.

Syntax: evalskript numkeys keys args

Parametrar:

eval — Redis ger kommandon för att tolka lua-skriptet

Manus — Lua-manus

numkeys — Anger antalet nycklar i nyckelnamnsparameteruppsättningen

keys — Nyckelnamnsparameteruppsättningen, representerad av den globala variabeln KEYS-arrayen, med början i ett index på 1

args — En uppsättning nyckelvärdesparametrar, representerade av en array av globala variabler ARGV, med början i ett index av 1


Fördelar med att använda Lua i Redis

Minska nätverksbelastningen. Flera förfrågningar kan skickas samtidigt i form av skript för att minska nätverkslatens
Atommanipulation. Redis kommer att köra hela skriptet som en helhet, utan att några andra kommandon läggs in däremellan. Därför finns det inget behov av att oroa sig för raceförhållanden och transaktioner under skriptprocessen.
Återinsatt. De fotsteg som skickas av klienten lagras beständigt i redis så att andra klienter kan återanvända skriptet utan att behöva använda kod för att slutföra samma logik.

Skriftatomicitet

Lua-skript kan inte ha tidskrävande operationer eller döda loopar, annars accepterar inte Redis andra kommandon och kör för att stoppa skriptet

Redis använder en enda Lua-tolk för att köra alla skript och säkerställer att skripten körs atomärt.Detta innebär att när ett skript körs kommer inga andra skript eller redis-kommandon att utföras! Därför, om det aktuella skriptet körs långsamt, kan servern kanske inte köra kommandot eftersom det är upptaget, till exempel:

Varje skript har en maximal exekveringstidsgräns, standardvärdet är 5 sekunder. Den maximala exekveringstiden styrs av lua-time-limit-alternativet i konfigurationsfilen redis.conf, eller direkt genom att använda kommandona config get och config set. När en skriptexekvering når sin maximala exekveringstid avslutar Redis det inte aktivt, utan utför följande steg:

(1) Redis noterar att ett manus håller på att få slut på tid

(2) Redis börjar acceptera förfrågningar från andra klienter igen, men accepterar endast exekvering av script kill-kommandon och avstängningsnosave.

(3) Om skriptet endast utför läsoperationer, använd kommandot script kill för att omedelbart stoppa skriptet; Om skriptet utför en skrivoperation tillåts endast kommandot 'stäng av' spar/nosave att stoppa servern för att förhindra att aktuell data skrivs till disk. (Vid det här laget är servern nere och datan kommer inte att sparas)


exempel

Exekverar du skriptet, är parametrarna 2 nyckel och värde, och kommandot är följande:


Deadloop-skript, när man kör följande skript gör att redis inte kan bearbeta andra kommandon och fastnar:

Försök använda ett skript för att lägga till data av typsträng med följande kommando:

Kör några mer komplexa skript, om nyckelns värde är lika med det vi skickade in, ta sedan bort cachen, annars gör du vad som helst, kommandot är följande:

Resultaten av implementeringen är följande:



(Slut)




Föregående:.NET/C# Lock Principle Monitor ger en djupgående förklaring
Nästa:IIS DELETE PUT begäran 405-lösning
 Hyresvärd| Publicerad på 2021-05-10 09:18:34 |

Inloggningen med hyperlänken är synlig.
Kommandot Redis Script Load används för att lägga till skriptskript i skriptcachen, men det körs inte omedelbart.

EVAL-kommandot lägger också till skriptet i skriptcachen, men utvärderar inmatningsskriptet omedelbart.

Om det givna skriptet redan finns i cachen vidtas ingen åtgärd.

Efter att skriptet lagts till i cachen kan skriptet anropas med skriptets SHA1-kontrollsumma via EVALSHA-kommandot. (Detta betyder också.)Samma skript kör samma sha1-värde på vilken annan redis-server som helst

Skript kan stanna kvar i cachen under en oändlig tid tills SCRIPT FLUSH körs.



 Hyresvärd| Publicerad på 2021-05-12 11:38:55 |
Bestäm om lua-skriptet finns i cachen


Efter att Redis startas om raderas Lua-skriptet automatiskt, inte kommer att vara permanent

Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com