Bird
Raised Fist0
Redisquery~10 mins

ZRANGE and ZREVRANGE for reading in Redis - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - ZRANGE and ZREVRANGE for reading
Start with Sorted Set
↓
Call ZRANGE or ZREVRANGE
↓
Specify start and stop indexes
↓
Retrieve elements in order
↓
Return list of elements
↓
End
The flow shows how ZRANGE or ZREVRANGE commands read elements from a sorted set by specifying start and stop indexes and returning elements in ascending or descending order.
Execution Sample
Redis
ZADD myset 1 one 2 two 3 three 4 four
ZRANGE myset 0 2
ZREVRANGE myset 0 2
Add elements with scores to a sorted set, then read first three elements in ascending and descending order.
Execution Table
StepCommandStart IndexStop IndexOrderResult
1ZADD myset 1 one 2 two 3 three 4 four---[one, two, three, four] (added)
2ZRANGE myset 0 202Ascending[one, two, three]
3ZREVRANGE myset 0 202Descending[four, three, two]
4ZRANGE myset 3 535Ascending[four]
5ZREVRANGE myset 2 424Descending[two, one]
6ZRANGE myset 5 10510Ascending[] (empty, out of range)
💡 Commands stop after retrieving elements within specified index range or return empty if out of range.
Variable Tracker
VariableAfter Step 1After Step 2After Step 3After Step 4After Step 5After Step 6
myset[one(1), two(2), three(3), four(4)][one, two, three, four][one, two, three, four][one, two, three, four][one, two, three, four][one, two, three, four]
Key Moments - 3 Insights
Why does ZRANGE with start=3 and stop=5 return only one element?
Because the sorted set has only 4 elements (indexes 0 to 3). Index 3 corresponds to 'four', indexes 4 and 5 are out of range, so only 'four' is returned (see execution_table row 4).
Why does ZREVRANGE with start=2 and stop=4 return two elements instead of three?
The reversed order indexes start at 0 for the highest score. Indexes 2 and 3 correspond to 'two' and 'one', but index 4 is out of range, so only two elements are returned (see execution_table row 5).
What happens if the start index is greater than the stop index in ZRANGE?
The command returns an empty list because the range is invalid.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the result of ZRANGE myset 0 2?
A[one, two]
B[four, three, two]
C[one, two, three]
D[two, three, four]
💡 Hint
Check execution_table row 2 under Result column.
At which step does the command return an empty list?
AStep 6
BStep 3
CStep 4
DStep 2
💡 Hint
Look for '[] (empty, out of range)' in the Result column.
If you want to get elements in descending order starting from the highest score, which command do you use?
AZRANGE
BZREVRANGE
CZADD
DZRANK
💡 Hint
Check the Order column in execution_table rows 2 and 3.
Concept Snapshot
ZRANGE key start stop
- Returns elements from sorted set in ascending order by score
- Indexes start and stop are zero-based
ZREVRANGE key start stop
- Returns elements in descending order by score
- Use to read top scores first
- Out of range indexes return empty list
- Both commands return list of elements only
Full Transcript
This visual execution trace shows how Redis commands ZRANGE and ZREVRANGE read elements from a sorted set. First, elements with scores are added using ZADD. Then ZRANGE retrieves elements in ascending order by score using zero-based start and stop indexes. ZREVRANGE retrieves elements in descending order. The execution table shows commands, indexes, order, and results step-by-step. Variable tracker shows the sorted set contents remain unchanged during reads. Key moments clarify common confusions about index ranges and order. The quiz tests understanding of results and command usage. The snapshot summarizes syntax and behavior for quick reference.

Practice

(1/5)
1. What does the Redis command ZRANGE myset 0 2 do?
easy
A. Deletes the first three elements from the sorted set 'myset'.
B. Returns the first three elements with the lowest scores from the sorted set 'myset'.
C. Returns the last three elements with the highest scores from the sorted set 'myset'.
D. Returns all elements from the sorted set 'myset' without any order.

Solution

  1. Step 1: Understand ZRANGE command behavior

    ZRANGE returns elements in ascending order by score, from the start index to the end index.
  2. Step 2: Apply the index range 0 to 2

    Indexes 0 to 2 mean the first three elements with the lowest scores are returned.
  3. Final Answer:

    Returns the first three elements with the lowest scores from the sorted set 'myset'. -> Option B
  4. Quick Check:

    ZRANGE with 0 2 = first 3 lowest scored items [OK]
Hint: ZRANGE gets items low to high by index range [OK]
Common Mistakes:
  • Confusing ZRANGE with ZREVRANGE order
  • Thinking it deletes elements
  • Assuming it returns all elements unordered
2. Which of the following is the correct syntax to get the top 5 highest scored elements from a sorted set named 'scores'?
easy
A. ZREVRANGE scores 0 4
B. ZRANGE scores -5 -1
C. ZRANGE scores 0 4 WITHSCORES
D. ZREVRANGE scores 5 0

Solution

  1. Step 1: Identify command for highest scores first

    ZREVRANGE returns elements from highest to lowest score.
  2. Step 2: Use index range 0 to 4 for top 5 elements

    Indexes 0 to 4 select the first 5 elements in descending order.
  3. Final Answer:

    ZREVRANGE scores 0 4 -> Option A
  4. Quick Check:

    Top 5 highest = ZREVRANGE 0 4 [OK]
Hint: Use ZREVRANGE 0 N-1 for top N highest scores [OK]
Common Mistakes:
  • Using negative indexes incorrectly with ZRANGE
  • Confusing ZRANGE and ZREVRANGE
  • Wrong index order like 5 0
3. Given a sorted set 'players' with elements and scores: {"Alice":10, "Bob":20, "Carol":15}, what is the output of ZRANGE players 0 1 WITHSCORES?
medium
A. ["Bob", "20", "Carol", "15"]
B. ["Alice", "10", "Bob", "20"]
C. ["Carol", "15", "Bob", "20"]
D. ["Alice", "10", "Carol", "15"]

Solution

  1. Step 1: Sort elements by score ascending

    Sorted order by score: Alice(10), Carol(15), Bob(20).
  2. Step 2: Select indexes 0 to 1 with scores

    Indexes 0 and 1 correspond to Alice and Carol with their scores.
  3. Final Answer:

    ["Alice", "10", "Carol", "15"] -> Option D
  4. Quick Check:

    ZRANGE 0 1 WITHSCORES = Alice and Carol with scores [OK]
Hint: ZRANGE returns low to high; WITHSCORES adds scores after each element [OK]
Common Mistakes:
  • Mixing order of elements
  • Forgetting WITHSCORES doubles output
  • Assuming ZREVRANGE order
4. You run ZREVRANGE leaderboard 0 2 but get unexpected results. Which of these is a likely cause?
medium
A. ZREVRANGE does not support index ranges.
B. You used ZRANGE instead of ZREVRANGE.
C. The sorted set 'leaderboard' is empty or does not exist.
D. The index range 0 2 is invalid for ZREVRANGE.

Solution

  1. Step 1: Check if sorted set exists and has elements

    If 'leaderboard' is empty or missing, ZREVRANGE returns empty result.
  2. Step 2: Validate command and index usage

    ZREVRANGE supports index ranges; 0 2 is valid; using ZRANGE instead would change order but not cause empty result.
  3. Final Answer:

    The sorted set 'leaderboard' is empty or does not exist. -> Option C
  4. Quick Check:

    Empty set causes empty ZREVRANGE output [OK]
Hint: Empty or missing set returns empty list [OK]
Common Mistakes:
  • Thinking index range is invalid
  • Confusing ZRANGE and ZREVRANGE effects
  • Believing ZREVRANGE lacks index support
5. You want to get the middle 3 elements by score from a sorted set 'scores' with 10 elements, ordered from lowest to highest. Which command correctly retrieves elements ranked 4th to 6th (0-based index) with their scores?
hard
A. ZRANGE scores 3 5 WITHSCORES
B. ZREVRANGE scores 3 5 WITHSCORES
C. ZRANGE scores 4 6 WITHSCORES
D. ZREVRANGE scores 4 6 WITHSCORES

Solution

  1. Step 1: Identify index range for middle 3 elements

    Elements ranked 4th to 6th correspond to indexes 3, 4, 5 (0-based).
  2. Step 2: Use ZRANGE for ascending order and WITHSCORES to get scores

    ZRANGE scores 3 5 WITHSCORES returns elements at indexes 3 to 5 with their scores.
  3. Final Answer:

    ZRANGE scores 3 5 WITHSCORES -> Option A
  4. Quick Check:

    Middle 3 elements = ZRANGE 3 5 WITHSCORES [OK]
Hint: ZRANGE with correct indexes gets middle elements low to high [OK]
Common Mistakes:
  • Using ZREVRANGE which reverses order
  • Off-by-one errors in index range
  • Confusing rank with index
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