Bird
Raised Fist0
Redisquery~20 mins

Priority queue pattern in Redis - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Redis Priority Queue Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Retrieve highest priority item from a Redis sorted set
Given a Redis sorted set named tasks where scores represent priority (lower score means higher priority), which command retrieves the task with the highest priority?
Redis
ZADD tasks 10 "task1" 5 "task2" 20 "task3"
AZRANGE tasks 0 0 WITHSCORES
BZPOPMIN tasks 1
CZREVRANGE tasks 0 0 WITHSCORES
DZRANGE tasks -1 -1 WITHSCORES
Attempts:
2 left
💡 Hint
Remember that lower scores mean higher priority in Redis sorted sets.
📝 Syntax
intermediate
2:00remaining
Correct syntax to add an item with priority to Redis sorted set
Which of the following commands correctly adds an item job42 with priority score 15 to a Redis sorted set named job_queue?
AZADD job_queue job42 15
BZADD job_queue 15 job42
CZADD job_queue (15) job42
DZADD job_queue "job42" 15
Attempts:
2 left
💡 Hint
The correct order is: ZADD key score member
❓ optimization
advanced
2:00remaining
Efficiently pop the highest priority item from a Redis sorted set
You want to remove and get the highest priority item (lowest score) from a Redis sorted set tasks. Which command is the most efficient and atomic way to do this?
AZPOPMIN tasks 1
BZRANGE tasks 0 0 WITHSCORES followed by ZREM tasks <member>
CZREVRANGE tasks 0 0 WITHSCORES
DZPOP tasks 1
Attempts:
2 left
💡 Hint
Look for a command that both returns and removes the element in one step.
🧠 Conceptual
advanced
2:00remaining
Understanding priority queue behavior in Redis sorted sets
In a Redis sorted set used as a priority queue, what does the score represent and how does it affect the order of elements?
AScore represents priority; elements are ordered randomly regardless of score.
BScore represents priority; higher scores mean higher priority and appear first.
CScore is ignored; elements are ordered by insertion time.
DScore represents priority; lower scores mean higher priority and appear first.
Attempts:
2 left
💡 Hint
Think about how Redis sorted sets order elements by score.
🔧 Debug
expert
3:00remaining
Identify the error in this Redis command sequence for priority queue
You want to add a job with priority 10 and then pop the highest priority job from job_queue. Which command sequence will cause an error?
Redis
ZADD job_queue 10 job100
ZPOPMIN job_queue 1
AZADD job_queue 10 job100\nZPOPMIN job_queue 1
BZADD job_queue 10 job100\nZRANGE job_queue 0 0
CZADD job_queue job100 10\nZPOPMIN job_queue 1
DZADD job_queue 10 job100\nZREM job_queue job100
Attempts:
2 left
💡 Hint
Check the order of arguments in ZADD command.

Practice

(1/5)
1. What does a priority queue in Redis typically use to manage item importance?
easy
A. Lists with push and pop operations
B. Hashes with key-value pairs
C. Sorted sets with scores representing priority
D. Strings storing serialized data

Solution

  1. Step 1: Understand Redis data structures

    Redis offers several data types; sorted sets allow ordering by score.
  2. Step 2: Identify priority queue implementation

    Priority queues use sorted sets where scores represent priority levels.
  3. Final Answer:

    Sorted sets with scores representing priority -> Option C
  4. Quick Check:

    Priority queue = sorted sets with scores [OK]
Hint: Remember: sorted sets sort by score for priority [OK]
Common Mistakes:
  • Confusing lists with priority queues
  • Using hashes which don't order by score
  • Thinking strings can manage priority
2. Which Redis command adds an item with a priority score to a priority queue?
easy
A. HSET
B. ZADD
C. LPUSH
D. SET

Solution

  1. Step 1: Identify command to add to sorted sets

    ZADD adds members with scores to sorted sets in Redis.
  2. Step 2: Match command to priority queue addition

    Priority queues use sorted sets, so ZADD is the correct command.
  3. Final Answer:

    ZADD -> Option B
  4. Quick Check:

    Add to priority queue = ZADD [OK]
Hint: Use ZADD to add with score in sorted sets [OK]
Common Mistakes:
  • Using LPUSH which is for lists
  • Using HSET which is for hashes
  • Using SET which is for strings
3. Given the commands:
ZADD tasks 1 "task1" 3 "task3" 2 "task2"
ZPOPMIN tasks

What will be the output of ZPOPMIN tasks?
medium
A. ["task1", "1"]
B. ["task3", "3"]
C. ["task2", "2"]
D. Syntax error

Solution

  1. Step 1: Understand ZADD insertion

    Three tasks added with scores 1, 3, and 2 respectively.
  2. Step 2: Understand ZPOPMIN behavior

    ZPOPMIN removes and returns the member with the lowest score, which is "task1" with score 1.
  3. Final Answer:

    ["task1", "1"] -> Option A
  4. Quick Check:

    Lowest score item popped = task1 [OK]
Hint: ZPOPMIN returns lowest score member first [OK]
Common Mistakes:
  • Picking highest score instead of lowest
  • Confusing ZPOPMIN with ZPOPMAX
  • Expecting syntax error from valid commands
4. What is wrong with this Redis command sequence for a priority queue?
ZADD queue "task1" 1
ZPOPMIN queue
medium
A. ZADD requires at least two members
B. ZPOPMIN does not remove items
C. Queue key must be a list, not a sorted set
D. ZADD syntax is incorrect; score must come before member

Solution

  1. Step 1: Check ZADD command syntax

    ZADD syntax requires the score before the member, but here member is before score.
  2. Step 2: Verify ZPOPMIN behavior

    ZPOPMIN removes the lowest score member correctly; no issue here.
  3. Final Answer:

    ZADD syntax is incorrect; score must come before member -> Option D
  4. Quick Check:

    ZADD syntax = score before member [OK]
Hint: Score always before member in ZADD [OK]
Common Mistakes:
  • Swapping score and member in ZADD
  • Thinking ZPOPMIN doesn't remove items
  • Using wrong data type for priority queue
5. You want to implement a priority queue in Redis where lower scores mean higher priority. You add tasks:
ZADD jobs 5 "job5" 1 "job1" 3 "job3"

Then you run:
ZPOPMIN jobs 2

What will be the result and what remains in the queue?
hard
A. Returns ["job1", "1", "job3", "3"]; queue left with ["job5"]
B. Returns ["job5", "3", "job3", "1"]; queue left with ["job1"]
C. Returns ["job1", "5", "job3", "3"]; queue left with ["job5"]
D. Returns error because ZPOPMIN cannot pop multiple items

Solution

  1. Step 1: Understand ZPOPMIN with count

    ZPOPMIN with argument 2 pops two lowest score members.
  2. Step 2: Identify lowest scores and remaining items

    Lowest scores are 1 (job1) and 3 (job3), so these are popped; job5 with score 5 remains.
  3. Final Answer:

    Returns ["job1", "1", "job3", "3"]; queue left with ["job5"] -> Option A
  4. Quick Check:

    ZPOPMIN 2 pops two lowest score items [OK]
Hint: ZPOPMIN count pops that many lowest score items [OK]
Common Mistakes:
  • Mixing up scores and members order
  • Thinking ZPOPMIN pops highest scores
  • Assuming ZPOPMIN can't pop multiple items
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