Bird
Raised Fist0
Redisquery~10 mins

ZRANK and ZREVRANK for position in Redis - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - ZRANK and ZREVRANK for position
Start with Sorted Set
↓
Call ZRANK member
↓
Find member position ascending
↓
Return rank or nil
↓
Call ZREVRANK member
↓
Find member position descending
↓
Return rank or nil
↓
End
ZRANK finds the zero-based rank of a member in ascending order. ZREVRANK finds it in descending order. Both return nil if member not found.
Execution Sample
Redis
ZADD myset 10 "apple" 20 "banana" 15 "cherry"
ZRANK myset "banana"
ZREVRANK myset "banana"
Add members with scores, then get banana's rank ascending and descending.
Execution Table
StepCommandSorted Set StateActionResult
1ZADD myset 10 "apple" 20 "banana" 15 "cherry"{"apple":10, "banana":20, "cherry":15}Add members with scores3 members added
2ZRANK myset "banana"{"apple":10, "banana":20, "cherry":15}Find rank ascending by score2 (apple=0, cherry=1, banana=2)
3ZREVRANK myset "banana"{"apple":10, "banana":20, "cherry":15}Find rank descending by score0 (banana=0, cherry=1, apple=2)
4ZRANK myset "orange"{"apple":10, "banana":20, "cherry":15}Member not foundnil
5ZREVRANK myset "orange"{"apple":10, "banana":20, "cherry":15}Member not foundnil
💡 Commands end after returning rank or nil for requested member.
Variable Tracker
VariableStartAfter ZADDAfter ZRANK bananaAfter ZREVRANK bananaFinal
mysetempty{"apple":10, "banana":20, "cherry":15}{"apple":10, "banana":20, "cherry":15}{"apple":10, "banana":20, "cherry":15}{"apple":10, "banana":20, "cherry":15}
rank_ascnilnil222
rank_descnilnilnil00
Key Moments - 3 Insights
Why does ZRANK return 2 for banana?
Because in ascending order by score, apple(10) is rank 0, cherry(15) is rank 1, banana(20) is rank 2 as shown in execution_table row 2.
Why does ZREVRANK return 0 for banana?
Because in descending order by score, banana(20) is the highest score and gets rank 0, as shown in execution_table row 3.
What happens if the member does not exist?
Both ZRANK and ZREVRANK return nil, meaning no rank found, as shown in execution_table rows 4 and 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what rank does ZRANK return for "cherry"?
A0
B1
C2
Dnil
💡 Hint
Check the ascending order ranks in execution_table row 2 where banana is 2 and cherry is before banana.
At which step does ZREVRANK return nil?
AStep 2
BStep 4
CStep 5
DStep 3
💡 Hint
Look at execution_table rows 4 and 5 for nil results; ZREVRANK nil is at step 5.
If "apple" score changed to 25, what would ZRANK "banana" return?
A1
B2
C0
Dnil
💡 Hint
If apple has highest score, banana moves down one rank in ascending order; check variable_tracker for rank changes.
Concept Snapshot
ZRANK key member
- Returns zero-based rank of member by ascending score
- Returns nil if member missing

ZREVRANK key member
- Returns zero-based rank by descending score
- Returns nil if member missing

Ranks start at 0 for lowest or highest score depending on command.
Full Transcript
This visual execution shows how Redis commands ZRANK and ZREVRANK work on a sorted set. First, members apple, banana, and cherry are added with scores 10, 20, and 15. ZRANK returns the position of a member when sorted from lowest to highest score. For banana, this is 2 because apple and cherry have lower scores. ZREVRANK returns the position from highest to lowest score. For banana, this is 0 because it has the highest score. If a member does not exist, both commands return nil. The variable tracker shows the sorted set state and ranks after each command. Key moments clarify why ranks are as they are and what happens if a member is missing. The quiz tests understanding of ranks and nil results. The snapshot summarizes syntax and behavior for quick reference.

Practice

(1/5)
1. What does the Redis command ZRANK return when used on a sorted set?
easy
A. The total number of members in the sorted set
B. The zero-based rank of a member with scores in ascending order
C. The score of the member in the sorted set
D. The member with the highest score

Solution

  1. Step 1: Understand what ZRANK does

    ZRANK returns the position of a member in a sorted set ordered by score from lowest to highest.
  2. Step 2: Identify the rank type

    The rank is zero-based, meaning the lowest score member has rank 0.
  3. Final Answer:

    The zero-based rank of a member with scores in ascending order -> Option B
  4. Quick Check:

    ZRANK = ascending zero-based rank [OK]
Hint: ZRANK ranks ascending, starting at zero [OK]
Common Mistakes:
  • Confusing rank with score
  • Thinking rank starts at 1
  • Mixing ZRANK with ZREVRANK
2. Which of the following is the correct syntax to get the rank of member 'user1' in sorted set 'scores' using ZREVRANK?
easy
A. ZRANK user1 scores
B. ZREVRANK user1 scores
C. ZRANK scores user1
D. ZREVRANK scores user1

Solution

  1. Step 1: Recall ZREVRANK command syntax

    The syntax is: ZREVRANK key member
  2. Step 2: Apply to given example

    Here, key is 'scores' and member is 'user1', so command is ZREVRANK scores user1
  3. Final Answer:

    ZREVRANK scores user1 -> Option D
  4. Quick Check:

    ZREVRANK key member syntax [OK]
Hint: Command syntax: ZREVRANK key member [OK]
Common Mistakes:
  • Swapping key and member order
  • Using ZRANK instead of ZREVRANK
  • Adding extra parameters
3. Given a sorted set 'players' with members and scores: {"alice": 50, "bob": 70, "carol": 60}, what is the result of ZRANK players bob?
medium
A. 2
B. 1
C. 0
D. None (member not found)

Solution

  1. Step 1: Sort members by ascending score

    Sorted by score ascending: alice(50), carol(60), bob(70)
  2. Step 2: Find zero-based rank of 'bob'

    bob is third in order, so rank is 2 (0-based)
  3. Final Answer:

    2 -> Option A
  4. Quick Check:

    ZRANK ascending order rank = 2 [OK]
Hint: ZRANK counts from lowest score, zero-based [OK]
Common Mistakes:
  • Assuming rank is score
  • Confusing ascending with descending order
  • Using ZREVRANK result instead
4. You run ZREVRANK leaderboard "playerX" but get a null reply. What is the most likely reason?
medium
A. "playerX" is not a member of the sorted set "leaderboard"
B. The command syntax is incorrect
C. The sorted set "leaderboard" is empty
D. ZREVRANK only works on lists, not sorted sets

Solution

  1. Step 1: Understand ZREVRANK null reply meaning

    Null reply means the member does not exist in the sorted set.
  2. Step 2: Check other options

    Syntax is correct, empty set would also return null but question implies member missing, and ZREVRANK works only on sorted sets.
  3. Final Answer:

    "playerX" is not a member of the sorted set "leaderboard" -> Option A
  4. Quick Check:

    Null reply means member missing [OK]
Hint: Null reply means member not in set [OK]
Common Mistakes:
  • Thinking syntax error causes null
  • Assuming empty set returns error
  • Confusing data types for ZREVRANK
5. You have a sorted set 'scores' with members and scores: {"x": 10, "y": 20, "z": 30}. You want to find the rank of member 'y' counting from highest score first. Which command and expected result is correct?
hard
A. ZRANK scores y returns 1
B. ZREVRANK scores y returns 2
C. ZREVRANK scores y returns 1
D. ZRANK scores y returns 2

Solution

  1. Step 1: Understand ZREVRANK ranks descending

    ZREVRANK ranks members from highest to lowest score, zero-based.
  2. Step 2: Sort members descending and find 'y' rank

    Descending order: z(30), y(20), x(10). 'y' is second, so rank is 1.
  3. Final Answer:

    ZREVRANK scores y returns 1 -> Option C
  4. Quick Check:

    ZREVRANK descending zero-based rank = 1 [OK]
Hint: ZREVRANK ranks from highest score, zero-based [OK]
Common Mistakes:
  • Mixing ZRANK and ZREVRANK results
  • Counting rank starting at 1 instead of 0
  • Confusing ascending and 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