Script loading in Redis allows you to load Lua scripts into the server so they can be executed efficiently multiple times without sending the full script each time.
Click to reveal answer
beginner
How does Redis cache scripts after loading them?
Redis caches scripts by storing their SHA1 hash. When you run a script, you can call it by its SHA1 hash instead of sending the full script again, saving bandwidth and improving speed.
Click to reveal answer
beginner
What command is used to load a Lua script into Redis without running it?
The command is SCRIPT LOAD <script>. It loads the script and returns its SHA1 hash without executing it.
Click to reveal answer
intermediate
What happens if you try to run a cached script by SHA1 hash but the script is not found in Redis?
Redis returns a NOSCRIPT error. You then need to send the full script again or reload it with SCRIPT LOAD.
Click to reveal answer
beginner
Why is script caching useful in Redis?
Script caching reduces network traffic and speeds up execution by avoiding sending the full Lua script every time. It also ensures scripts run atomically on the server.
Click to reveal answer
Which Redis command loads a Lua script and returns its SHA1 hash without executing it?
ASCRIPT RUN
BEVAL
CSCRIPT LOAD
DEVALSHA
✗ Incorrect
SCRIPT LOAD loads the script and returns its SHA1 hash without running it.
What does Redis return if you try to run a script by SHA1 hash but the script is not cached?
ANOSCRIPT error
BSCRIPT NOT FOUND
CNULL
DOK
✗ Incorrect
Redis returns a NOSCRIPT error if the script is not found in the cache.
Which command runs a cached Lua script by its SHA1 hash?
AEVALSHA
BSCRIPT LOAD
CEVAL
DSCRIPT EXEC
✗ Incorrect
EVALSHA runs a cached script by its SHA1 hash.
Why is using script caching in Redis beneficial?
AIt disables atomic execution
BIt slows down script execution
CIt increases network traffic
DIt reduces bandwidth and speeds up execution
✗ Incorrect
Caching reduces bandwidth and speeds up execution by avoiding sending full scripts repeatedly.
What is the SHA1 hash used for in Redis script caching?
ATo encrypt the script
BTo identify and run cached scripts
CTo delete scripts
DTo compile scripts
✗ Incorrect
The SHA1 hash uniquely identifies cached scripts for running them efficiently.
Explain how Redis script loading and caching works and why it is useful.
Think about how sending scripts repeatedly can be slow and how caching helps.
You got /5 concepts.
Describe the steps to run a Lua script in Redis using script caching.
Focus on loading, running by hash, and error handling.
You got /3 concepts.
Practice
(1/5)
1. What does the SCRIPT LOAD command do in Redis?
easy
A. It executes a Lua script immediately without caching.
B. It lists all cached Lua scripts in Redis.
C. It deletes a cached Lua script by its SHA1 hash.
D. It loads a Lua script into Redis and returns its SHA1 hash.
Solution
Step 1: Understand SCRIPT LOAD purpose
The SCRIPT LOAD command stores a Lua script in Redis and returns a unique SHA1 hash for it.
Step 2: Differentiate from other commands
Unlike EVAL, SCRIPT LOAD does not execute the script but prepares it for later use.
Final Answer:
It loads a Lua script into Redis and returns its SHA1 hash. -> Option D
Quick Check:
SCRIPT LOAD returns SHA1 hash [OK]
Hint: SCRIPT LOAD stores script and returns SHA1 hash [OK]
Common Mistakes:
Confusing SCRIPT LOAD with EVAL which runs scripts immediately
Thinking SCRIPT LOAD deletes scripts
Assuming SCRIPT LOAD lists scripts
2. Which of the following is the correct syntax to load a Lua script into Redis and get its SHA1 hash?
easy
A. EVALSHA "return redis.call('PING')" 0
B. SCRIPT LOAD "return redis.call('PING')"
C. SCRIPT EXECUTE "return redis.call('PING')"
D. LOAD SCRIPT "return redis.call('PING')"
Solution
Step 1: Identify correct command syntax
The correct command to load a script is SCRIPT LOAD followed by the Lua script as a string.
Step 2: Eliminate incorrect options
EVALSHA runs a cached script by SHA, SCRIPT EXECUTE and LOAD SCRIPT are invalid Redis commands.
Final Answer:
SCRIPT LOAD "return redis.call('PING')" -> Option B
Quick Check:
SCRIPT LOAD syntax is SCRIPT LOAD "script" [OK]
Hint: SCRIPT LOAD "script" loads script and returns SHA1 [OK]
Common Mistakes:
Using EVALSHA instead of SCRIPT LOAD to load script
Using non-existent commands like SCRIPT EXECUTE
Incorrect command order or missing quotes
3. Given the following commands executed in Redis:
But you get an error: NOSCRIPT No matching script. Please use EVAL.
What is the most likely cause?
medium
A. The SHA1 hash used in EVALSHA is incorrect or from a different script.
B. The KEYS argument count is wrong; it should be 0 instead of 1.
C. SCRIPT LOAD does not cache scripts, so EVALSHA fails.
D. Redis does not support EVALSHA for GET commands.
Solution
Step 1: Understand NOSCRIPT error meaning
This error means Redis does not have the script cached under the given SHA1 hash.
Step 2: Identify common causes
Most often, the SHA1 hash passed to EVALSHA is wrong or from a different script than loaded.
Final Answer:
The SHA1 hash used in EVALSHA is incorrect or from a different script. -> Option A
Quick Check:
NOSCRIPT error means SHA1 mismatch [OK]
Hint: NOSCRIPT means SHA1 hash mismatch or missing script [OK]
Common Mistakes:
Assuming KEYS count is always zero
Thinking SCRIPT LOAD does not cache scripts
Believing Redis disallows EVALSHA for certain commands
5. You want to optimize Redis script execution by caching a Lua script that increments a key's value by a given amount. Which sequence of commands correctly loads and runs this script multiple times efficiently?
hard
A. Use SCRIPT LOAD to get SHA1, then call EVALSHA with the SHA1 and arguments for each increment.
B. Use EVAL with the full script every time you want to increment the key.
C. Use SCRIPT FLUSH before every increment to clear cached scripts, then EVALSHA.
D. Use SCRIPT LOAD once, then call EVAL with the full script every time.
Solution
Step 1: Understand caching for efficiency
Loading the script once with SCRIPT LOAD caches it and returns SHA1 for reuse.
Step 2: Use EVALSHA for repeated execution
Calling EVALSHA with the SHA1 runs the cached script efficiently without sending full script each time.
Step 3: Eliminate inefficient options
Using EVAL every time sends full script, SCRIPT FLUSH clears cache unnecessarily.
Final Answer:
Use SCRIPT LOAD to get SHA1, then call EVALSHA with the SHA1 and arguments for each increment. -> Option A
Quick Check:
Cache script once, run with EVALSHA repeatedly [OK]
Hint: Load once with SCRIPT LOAD, run many times with EVALSHA [OK]
Common Mistakes:
Using EVAL repeatedly instead of EVALSHA
Flushing scripts unnecessarily with SCRIPT FLUSH
Reloading script before every execution
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.