Challenge - 5 Problems
Redis Keys and Arguments Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate2:00remaining
Accessing KEYS and ARGV in a Lua script
Given the following Redis Lua script, what will be the output if KEYS = ['user:1', 'user:2'] and ARGV = ['100', '200']?
return {KEYS[1], ARGV[2]}Redis
return {KEYS[1], ARGV[2]}
Attempts:
2 left
💡 Hint
Remember that KEYS and ARGV are 1-based indexed in Redis Lua scripts.
✗ Incorrect
In Redis Lua scripts, KEYS and ARGV arrays start at index 1. KEYS[1] is 'user:1' and ARGV[2] is '200'. So the returned list is ['user:1', '200'].
🧠 Conceptual
intermediate2:00remaining
Understanding KEYS and ARGV usage in Redis scripts
Why does Redis separate input parameters into KEYS and ARGV in Lua scripts?
Attempts:
2 left
💡 Hint
Think about Redis cluster and command atomicity.
✗ Incorrect
Redis requires keys to be explicitly declared in KEYS so it can manage locking and replication correctly. ARGV holds other arguments that are not keys.
📝 Syntax
advanced2:00remaining
Identify the syntax error in accessing KEYS and ARGV
Which option contains a syntax error when trying to access the first key and first argument in a Redis Lua script?
Redis
return {KEYS[0], ARGV[1]}
Attempts:
2 left
💡 Hint
Lua arrays start at 1, not 0.
✗ Incorrect
Lua arrays are 1-based. Accessing KEYS[0] or ARGV[0] is invalid and causes a nil value or error. ARGV[1] and KEYS[1] are valid.
🔧 Debug
advanced2:00remaining
Debugging argument access in Redis Lua script
A Redis Lua script returns nil when trying to access ARGV[3], but ARGV has 2 elements. What is the cause?
Attempts:
2 left
💡 Hint
Check how many arguments are passed in ARGV.
✗ Incorrect
ARGV is an array with length equal to the number of arguments passed. Accessing ARGV[3] when only 2 arguments exist returns nil.
❓ optimization
expert2:00remaining
Optimizing Redis Lua script argument usage
You have a Redis Lua script that receives 10 keys and 10 arguments. You only need to access the first 3 keys and first 5 arguments. Which approach is best for performance?
Attempts:
2 left
💡 Hint
Minimize data passed to the script for best performance.
✗ Incorrect
Passing only the needed keys and arguments reduces memory and processing overhead inside the script, improving performance.