0
0
Redisquery~30 mins

Atomic operations with Lua in Redis - Mini Project: Build & Apply

Choose your learning style9 modes available
Atomic Operations with Lua in Redis
📖 Scenario: You are managing a Redis database for a simple online store. You want to safely update the stock count of a product without interference from other operations.
🎯 Goal: Build a Lua script that atomically checks the stock of a product and decreases it by a specified amount only if enough stock is available.
📋 What You'll Learn
Create a Redis key with the initial stock count for a product.
Define a variable for the amount to decrease the stock.
Write a Lua script that atomically checks if the stock is sufficient and decreases it.
Add the final command to execute the Lua script using Redis EVAL.
💡 Why This Matters
🌍 Real World
Managing stock counts in an online store requires atomic updates to prevent overselling.
💼 Career
Understanding Lua scripting in Redis is valuable for backend developers working with caching and real-time data stores.
Progress0 / 4 steps
1
DATA SETUP: Create a Redis key for product stock
Create a Redis key called product_stock and set its value to 100 to represent the initial stock count.
Redis
Need a hint?

Use the Redis SET command to create the key and assign the value.

2
CONFIGURATION: Define the amount to decrease stock
Define a Lua variable called decrease_amount and set it to 5 to represent how many items to remove from stock.
Redis
Need a hint?

Use local decrease_amount = 5 to define the variable inside the Lua script.

3
CORE LOGIC: Write Lua script for atomic stock decrease
Write a Lua script that uses redis.call('GET', 'product_stock') to get the current stock, converts it to a number, checks if it is greater or equal to decrease_amount, and if yes, decreases the stock by decrease_amount using redis.call('SET', 'product_stock', new_stock). Use variables current_stock and new_stock.
Redis
Need a hint?

Use tonumber to convert the stock string to a number. Use if to check stock and redis.call('SET', ...) to update.

4
COMPLETION: Execute the Lua script atomically with Redis EVAL
Write the Redis EVAL command to run the Lua script atomically. Use the full Lua script as a string, pass 0 for the number of keys, and no additional arguments.
Redis
Need a hint?

Use EVAL with the Lua script as a string and 0 keys to run the script atomically.