📖 Scenario: You are managing a leaderboard for a game. Players earn points, and you want to store their scores in Redis. Later, you want to find players who scored within certain ranges to reward them.
🎯 Goal: Build a Redis sorted set to store player scores, set a minimum score threshold, query players within a score range, and finally add a new player with a score.
📋 What You'll Learn
Create a sorted set called game_scores with three players and their exact scores
Create a variable called min_score and set it to 50
Use the ZREVRANGEBYSCORE command to get players with scores between 100 and min_score
Add a new player player4 with score 75 to the game_scores sorted set
💡 Why This Matters
🌍 Real World
Leaderboards in games or apps often use Redis sorted sets to store and query user scores efficiently.
💼 Career
Understanding Redis sorted sets and range queries is valuable for backend developers working on real-time scoring, ranking, or recommendation systems.
Progress0 / 4 steps
1
Create the sorted set with initial player scores
Create a Redis sorted set called game_scores and add these exact members with scores: player1 with 120, player2 with 90, and player3 with 60.
Redis
Hint
Use the ZADD command with the sorted set name, followed by score and member pairs.
2
Set the minimum score threshold
Create a variable called min_score and set it to 50.
Redis
Hint
Assign the number 50 to the variable min_score.
3
Query players within the score range
Use the ZREVRANGEBYSCORE command to get players from game_scores with scores between 100 and the variable min_score. Use the syntax: ZREVRANGEBYSCORE game_scores 100 min_score.
Redis
Hint
Use ZREVRANGEBYSCORE with the sorted set name and score range to get players in descending order.
4
Add a new player with a score
Add a new player called player4 with a score of 75 to the game_scores sorted set using the ZADD command.
Redis
Hint
Use ZADD with the sorted set name, score, and member name to add the new player.
Practice
(1/5)
1. What does the Redis command ZRANGEBYSCORE do?
easy
A. It returns members in a sorted set within a specified score range.
B. It deletes members from a sorted set based on score.
C. It adds new members to a sorted set with scores.
D. It returns the total number of members in a sorted set.
Solution
Step 1: Understand the command purpose
ZRANGEBYSCORE is used to get members from a sorted set filtered by score range.
Step 2: Compare options with command behavior
Only "It returns members in a sorted set within a specified score range." correctly describes returning members within a score range.
Final Answer:
It returns members in a sorted set within a specified score range. -> Option A
Quick Check:
ZRANGEBYSCORE = returns members by score range [OK]
Hint: ZRANGEBYSCORE fetches members filtered by score range [OK]
Common Mistakes:
Confusing ZRANGEBYSCORE with commands that add or delete members
Thinking it returns count instead of members
Assuming it sorts members by name instead of score
2. Which of the following is the correct syntax to get members with scores between 10 and 20 from a sorted set named myzset?
easy
A. ZRANGEBYSCORE myzset [10 [20
B. ZRANGEBYSCORE myzset (10 (20
C. ZRANGEBYSCORE myzset 10 20
D. ZRANGEBYSCORE myzset "10" "20"
Solution
Step 1: Recall basic syntax of ZRANGEBYSCORE
The command format is ZRANGEBYSCORE key min max where min and max are numbers or special strings.
Step 2: Analyze options for correct syntax
ZRANGEBYSCORE myzset 10 20 uses plain numbers 10 and 20 correctly. Options A and B use parentheses or brackets which mean exclusive or inclusive but are not needed here. ZRANGEBYSCORE myzset "10" "20" uses quotes which are unnecessary.
Final Answer:
ZRANGEBYSCORE myzset 10 20 -> Option C
Quick Check:
Syntax = ZRANGEBYSCORE key min max [OK]
Hint: Use plain numbers for inclusive score range in ZRANGEBYSCORE [OK]
Common Mistakes:
Using parentheses or brackets incorrectly for inclusive ranges
Adding quotes around numeric scores
Mixing up min and max order
3. Given the sorted set myzset with members and scores: {"a":5, "b":10, "c":15, "d":20}, what is the result of ZRANGEBYSCORE myzset 10 20 WITHSCORES?
medium
A. ["b", "10", "c", "15", "d", "20"]
B. ["a", "5", "b", "10", "c", "15"]
C. ["c", "15", "d", "20"]
D. ["a", "5", "d", "20"]
Solution
Step 1: Identify members with scores between 10 and 20 inclusive
Members with scores 10, 15, and 20 are "b", "c", and "d" respectively.
Step 2: Understand WITHSCORES option output
WITHSCORES returns members and their scores as alternating elements in the list.
Final Answer:
["b", "10", "c", "15", "d", "20"] -> Option A
Quick Check:
Members with scores 10-20 + WITHSCORES = ["b", "10", "c", "15", "d", "20"] [OK]
Hint: WITHSCORES returns member-score pairs in order [OK]
Common Mistakes:
Including members outside the score range
Returning only members without scores
Mixing order of members and scores
4. What is wrong with this command to get members with scores between 5 and 15 from myzset?
ZRANGEBYSCORE myzset 5 15 WITHSCORE
medium
A. The score range should be reversed as 15 5.
B. The option should be WITHSCORES, not WITHSCORE.
C. The command needs a LIMIT clause to work.
D. The key name must be quoted.
Solution
Step 1: Check the option spelling
The correct option to include scores is WITHSCORES (plural), not WITHSCORE.
Step 2: Verify other parts of the command
The score range 5 to 15 is correct, LIMIT is optional, and key names do not require quotes.
Final Answer:
The option should be WITHSCORES, not WITHSCORE. -> Option B
Quick Check:
Correct option spelling = WITHSCORES [OK]
Hint: Use WITHSCORES (plural) to get scores with members [OK]
Common Mistakes:
Misspelling WITHSCORES option
Reversing min and max scores
Adding unnecessary quotes around key
5. You have a sorted set players with player names and their scores. You want to find all players with scores greater than 50 but less than or equal to 100, including their scores. Which command correctly achieves this?
hard
A. ZRANGEBYSCORE players [50 100 WITHSCORES
B. ZRANGEBYSCORE players 50 100 WITHSCORES
C. ZRANGEBYSCORE players (50 (100 WITHSCORES
D. ZRANGEBYSCORE players (50 100 WITHSCORES
Solution
Step 1: Understand score range requirements
Scores must be greater than 50 (exclusive) and less than or equal to 100 (inclusive).
Step 2: Use parentheses for exclusive and plain number for inclusive
In Redis, (50 means greater than 50 (exclusive), and 100 means less than or equal to 100 (inclusive).
Step 3: Check command syntax
ZRANGEBYSCORE players (50 100 WITHSCORES correctly uses (50 and 100 with WITHSCORES option.
Final Answer:
ZRANGEBYSCORE players (50 100 WITHSCORES -> Option D
Quick Check:
Exclusive lower bound uses (number) syntax [OK]
Hint: Use (number for exclusive, number for inclusive in range [OK]
Common Mistakes:
Using brackets [] which Redis does not support for range
Not using parentheses for exclusive bounds
Confusing inclusive and exclusive range syntax
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.