📖 Scenario: You are building a simple leaderboard for a game. Players earn points, and you want to keep track of their scores in order from highest to lowest.
🎯 Goal: Create a Redis sorted set to store player scores, add some players with their scores, update scores, and retrieve the top players.
📋 What You'll Learn
Create a Redis sorted set called game_leaderboard.
Add three players with exact scores: "Alice" with 1500, "Bob" with 1200, and "Charlie" with 1800.
Add a variable score_increment with value 300 to increase scores.
Increase Bob's score by score_increment.
Retrieve the top 3 players with their scores in descending order.
💡 Why This Matters
🌍 Real World
Leaderboards are common in games and apps to show top users or scores in real time.
💼 Career
Knowing how to use Redis sorted sets for leaderboards is useful for backend developers working on gaming, social, or analytics platforms.
Progress0 / 4 steps
1
Create the leaderboard sorted set with initial players
Use the Redis command ZADD to create a sorted set called game_leaderboard and add these players with their scores: 1500 "Alice", 1200 "Bob", and 1800 "Charlie".
Redis
Hint
Use ZADD followed by the sorted set name, then pairs of score and member.
2
Add a score increment variable
Create a Redis string key called score_increment and set its value to 300.
Redis
Hint
Use SET to create a string key with the value 300.
3
Increase Bob's score by the increment
Use the Redis command ZINCRBY to increase Bob's score in game_leaderboard by the value stored in score_increment. Use GET score_increment to retrieve the increment value.
Redis
Hint
Use ZINCRBY with the sorted set name, increment value, and member name.
4
Retrieve the top 3 players with scores
Use the Redis command ZREVRANGE on game_leaderboard to get the top 3 players with their scores. Include the WITHSCORES option to see scores.
Redis
Hint
ZREVRANGE returns members in descending order by score. Use 0 2 to get top 3.
Practice
(1/5)
1. What Redis data structure is best suited for implementing a leaderboard where members have scores?
easy
A. Hash
B. Sorted Set
C. List
D. String
Solution
Step 1: Understand leaderboard requirements
A leaderboard needs to store members with scores and retrieve them sorted by score.
Step 2: Identify Redis data structure
Redis Sorted Sets store members with scores and keep them sorted automatically.
Final Answer:
Sorted Set -> Option B
Quick Check:
Leaderboard = Sorted Set [OK]
Hint: Leaderboards need sorted data, use Sorted Sets [OK]
Common Mistakes:
Choosing List which is ordered by insertion, not score
Using Hash which stores key-value but not sorted by score
Using String which holds plain text, not multiple members
2. Which Redis command correctly adds or updates a member's score in a leaderboard stored as a sorted set?
easy
A. ZADD leaderboard 100 user1
B. ZADD leaderboard user1 100
C. ZINCRBY leaderboard 100 user1
D. ZREM leaderboard user1
Solution
Step 1: Recall ZADD syntax
ZADD command syntax is: ZADD key score member.
Step 2: Match syntax to options
ZADD leaderboard 100 user1 uses ZADD leaderboard 100 user1 which matches the correct syntax.
Final Answer:
ZADD leaderboard 100 user1 -> Option A
Quick Check:
ZADD syntax = ZADD key score member [OK]
Hint: ZADD syntax: key, score, then member [OK]
Common Mistakes:
Swapping score and member order
Using ZINCRBY which increments score, not sets it
Using ZREM which removes member instead of adding
3. Given the following Redis commands executed in order:
But the output is empty. What is the most likely cause?
medium
A. ZREVRANGE returns ascending order by default
B. ZREVRANGE syntax is incorrect, it needs WITHSCORES
C. ZADD commands used wrong order of arguments
D. The leaderboard key was deleted before ZREVRANGE
Solution
Step 1: Check command correctness
ZADD commands have correct syntax and add members with scores.
Step 2: Analyze empty output from ZREVRANGE
Empty output means the key 'leaderboard' likely does not exist or was deleted before ZREVRANGE.
Final Answer:
The leaderboard key was deleted before ZREVRANGE -> Option D
Quick Check:
Empty output = missing key [OK]
Hint: Empty ZREVRANGE means key missing or deleted [OK]
Common Mistakes:
Thinking WITHSCORES is required for output (it's optional)
Assuming ZREVRANGE returns ascending order
Believing ZADD argument order was wrong (it was correct)
5. You want to implement a leaderboard that shows the top 3 users but excludes any user with a score below 50. Which Redis commands or approach should you use?
hard
A. Use ZRANGEBYSCORE leaderboard 50 +inf LIMIT 0 3
B. Use ZREVRANGE leaderboard 0 2 and filter scores < 50 in application
C. Use ZREVRANGEBYSCORE leaderboard +inf 50 LIMIT 0 3
D. Use ZRANGE leaderboard 0 2 WITHSCORES and exclude scores < 50
Solution
Step 1: Understand filtering by score
We want top 3 users with scores >= 50, sorted descending.
Step 2: Choose correct Redis command
ZREVRANGEBYSCORE leaderboard +inf 50 LIMIT 0 3 returns members with scores between +inf and 50 descending, limited to 3.
Final Answer:
Use ZREVRANGEBYSCORE leaderboard +inf 50 LIMIT 0 3 -> Option C
Quick Check:
Filter by score with ZREVRANGEBYSCORE [OK]
Hint: Use ZREVRANGEBYSCORE with score limits and LIMIT [OK]
Common Mistakes:
Using ZREVRANGE without score filtering
Using ZRANGEBYSCORE which sorts ascending, not descending
Filtering scores in app instead of Redis command
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.