redis
Lua Scripting
Zoeken…
Invoering
Redis biedt een aantal mechanismen om de functionaliteit van de database uit te breiden. Eén mechanisme is door het gebruik van server-side LUA-scripts die kunnen worden uitgevoerd om gegevens te manipuleren. Lua-scripts kunnen nuttig zijn om dure bewerkingen uit te voeren of om atomaire bewerkingen te implementeren die logica vereisen.
Commando's voor scripts
Redis biedt zeven verschillende bewerkingen voor het werken met scripts:
- Eval-bewerkingen (EVAL, EVALSHA)
- SCRIPT-bewerkingen (DEBUG, BESTAAT, SPOELEN, DODEN, LADING)
De opdracht EVAL evalueert een script dat als stringargument aan de server wordt verstrekt. Scripts hebben toegang tot de opgegeven Redis-sleutels die als argumenten voor de opdracht worden genoemd en tot extra tekenreeksparameters die de gebruiker aan het script wil doorgeven.
Bijvoorbeeld de opdracht:
EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
veroorzaakt de uitvoering van een door de gebruiker gedefinieerd Lua-script dat eenvoudig de opgegeven waarden retourneert. De oproep heeft betrekking op 2 Redis-toetsen (key1 en key2) en twee parameters.
Een andere manier om een Lua-script uit te voeren, is door het eerst in de database te laden en vervolgens uit te voeren met behulp van een SHA-hash van het script:
> script load "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"
"a42059b356c875f0717db19a51f6aaca9ae659ea"
> evalsha "a42059b356c875f0717db19a51f6aaca9ae659ea" 2 key1 key2 foo bar
1) "key1"
2) "key2"
3) "foo"
4) "bar"
De opdracht script load laadt het script en slaat het op in de database. Er wordt een sh-handtekening van het script geretourneerd, zodat naar toekomstige oproepen kan worden verwezen. De EVALSHA-functie neemt de sha en voert het bijbehorende script uit de database uit.