Bird
Raised Fist0
Redisquery~20 mins

Why sorted sets solve ranking problems in Redis - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Sorted Set Ranking Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Retrieve top 3 players by score using sorted sets
Given a Redis sorted set named game_scores where the score is the player's points, which command returns the top 3 players with the highest scores?
Redis
ZADD game_scores 1500 player1 1800 player2 1200 player3 2000 player4 1700 player5
AZREVRANGE game_scores 0 2 WITHSCORES
BZRANGEBYSCORE game_scores 0 3
CZREVRANGEBYSCORE game_scores 0 3
DZRANGE game_scores 0 2 WITHSCORES
Attempts:
2 left
💡 Hint
Remember that sorted sets are ordered by score ascending by default.
🧠 Conceptual
intermediate
1:30remaining
Why use sorted sets for ranking?
Why are Redis sorted sets ideal for implementing ranking systems?
AThey allow storing multiple values per key without scores.
BThey store data in key-value pairs without order.
CThey store unique elements with associated scores, allowing fast retrieval by rank.
DThey only support string sorting, not numeric scores.
Attempts:
2 left
💡 Hint
Think about how rankings depend on scores and order.
📝 Syntax
advanced
1:30remaining
Identify the correct syntax to increment a player's score
Which Redis command correctly increments the score of player3 by 250 in the sorted set game_scores?
AZADD game_scores INCR 250 player3
BZINCRBY game_scores 250 player3
CZINCR game_scores player3 250
DZADD game_scores player3 250
Attempts:
2 left
💡 Hint
Look for the command that increments scores in sorted sets.
❓ optimization
advanced
2:00remaining
Efficiently retrieving ranks of multiple players
You want to get the ranks of player1, player2, and player3 in game_scores. Which approach is most efficient?
AUse a Lua script to batch ZRANK calls in one request.
BUse ZREVRANGE with scores and search for players manually.
CUse ZRANGE to get all players and find ranks in client code.
DCall ZRANK three times, once per player.
Attempts:
2 left
💡 Hint
Minimize round-trip calls to Redis.
🔧 Debug
expert
2:30remaining
Why does this ranking query return unexpected results?
You run ZREVRANGE game_scores 0 4 but the top player is missing. The sorted set contains players with scores 1000, 1500, 2000, 2500, and 3000. What is the most likely cause?
AThe command should use ZRANGE instead of ZREVRANGE.
BThe scores were added with negative values causing reverse order confusion.
CThe sorted set key <code>game_scores</code> does not exist.
DThe sorted set was created with string scores instead of numeric scores.
Attempts:
2 left
💡 Hint
Check how Redis treats scores internally.

Practice

(1/5)
1. Why are Redis sorted sets ideal for ranking problems like leaderboards?
easy
A. Because they store elements with scores, keeping them automatically ordered.
B. Because they store data without any order, making insertion faster.
C. Because they only allow unique string values without scores.
D. Because they use hashes to store key-value pairs.

Solution

  1. Step 1: Understand sorted set structure

    Sorted sets store each element with a numeric score that determines its order.
  2. Step 2: Relate ordering to ranking

    This automatic ordering by score makes it easy to rank items, like players in a leaderboard.
  3. Final Answer:

    Because they store elements with scores, keeping them automatically ordered. -> Option A
  4. Quick Check:

    Sorted sets = ordered by score [OK]
Hint: Sorted sets keep scores ordered automatically for rankings [OK]
Common Mistakes:
  • Thinking sorted sets store unordered data
  • Confusing sorted sets with hashes
  • Ignoring the role of scores in ordering
2. Which Redis command correctly adds a member with a score to a sorted set named game_scores?
easy
A. HSET game_scores player1 1500
B. SADD game_scores player1 1500
C. ZADD player1 1500 game_scores
D. ZADD game_scores 1500 player1

Solution

  1. Step 1: Recall ZADD syntax

    ZADD command syntax is: ZADD key score member.
  2. Step 2: Match syntax to options

    ZADD game_scores 1500 player1 uses ZADD with key 'game_scores', score 1500, and member 'player1' correctly.
  3. Final Answer:

    ZADD game_scores 1500 player1 -> Option D
  4. Quick Check:

    ZADD key score member = correct syntax [OK]
Hint: ZADD syntax: ZADD key score member [OK]
Common Mistakes:
  • Using SADD instead of ZADD for sorted sets
  • Swapping member and score positions
  • Using hash commands like HSET incorrectly
3. Given the sorted set ZADD leaderboard 100 Alice 200 Bob 150 Carol, what does ZREVRANGE leaderboard 0 1 WITHSCORES return?
medium
A. ["Bob", "200", "Carol", "150"]
B. ["Alice", "100", "Carol", "150"]
C. ["Carol", "150", "Alice", "100"]
D. ["Bob", "200", "Alice", "100"]

Solution

  1. Step 1: Understand ZREVRANGE behavior

    ZREVRANGE returns members ordered from highest to lowest score.
  2. Step 2: Identify top two members

    Scores: Bob=200, Carol=150, Alice=100. Top two are Bob and Carol.
  3. Final Answer:

    ["Bob", "200", "Carol", "150"] -> Option A
  4. Quick Check:

    Highest scores first = Bob, Carol [OK]
Hint: ZREVRANGE returns highest scores first [OK]
Common Mistakes:
  • Confusing ZRANGE with ZREVRANGE order
  • Ignoring WITHSCORES option format
  • Mixing member order in output
4. You run ZADD scores player1 50 player2 100 but get an error. What is the likely cause?
medium
A. Scores must be strings, not numbers.
B. ZADD cannot add multiple members at once.
C. ZADD requires score and member pairs; this command has incorrect pairs.
D. The key 'scores' must exist before adding members.

Solution

  1. Step 1: Recall ZADD syntax

    ZADD expects pairs of score and member: score1 member1 score2 member2 ...
  2. Step 2: Analyze given command

    Command is ZADD scores player1 50 player2 100 -- after key, 'player1' (string) where score (number) expected, incorrect pairs.
  3. Final Answer:

    ZADD requires score and member pairs; this command has incorrect pairs. -> Option C
  4. Quick Check:

    Score must come before member in pairs [OK]
Hint: Score must always come before member in ZADD [OK]
Common Mistakes:
  • Swapping score and member order
  • Trying to add multiple members with wrong syntax
  • Assuming key must pre-exist
5. You want to create a leaderboard that shows the top 3 players with their ranks and scores using Redis sorted sets. Which sequence of commands achieves this correctly?
hard
A. ZADD leaderboard 300 Alice 250 Bob 400 Carol; ZRANGE leaderboard 0 2 WITHSCORES
B. ZADD leaderboard 300 Alice 250 Bob 400 Carol; ZREVRANGE leaderboard 0 2 WITHSCORES
C. ZADD leaderboard Alice 300 Bob 250 Carol 400; ZRANGE leaderboard 0 2
D. SADD leaderboard Alice Bob Carol; ZRANGE leaderboard 0 2 WITHSCORES

Solution

  1. Step 1: Add players with scores correctly

    ZADD syntax requires score before member, so 'ZADD leaderboard 300 Alice 250 Bob 400 Carol' is correct.
  2. Step 2: Retrieve top 3 players by highest score

    ZREVRANGE with 0 2 and WITHSCORES returns top 3 players in descending order with scores.
  3. Final Answer:

    ZADD leaderboard 300 Alice 250 Bob 400 Carol; ZREVRANGE leaderboard 0 2 WITHSCORES -> Option B
  4. Quick Check:

    Use ZADD with scores, then ZREVRANGE for top ranks [OK]
Hint: Use ZADD then ZREVRANGE for top ranked results [OK]
Common Mistakes:
  • Using SADD which ignores scores
  • Swapping score and member in ZADD
  • Using ZRANGE instead of ZREVRANGE for descending order
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard