Bird
Raised Fist0
Redisquery~30 mins

Priority queue pattern in Redis - Mini Project: Build & Apply

Choose your learning style10 modes available
Priority Queue Pattern with Redis
📖 Scenario: You are building a simple task manager that processes tasks based on their priority. Tasks with higher priority should be handled first.
🎯 Goal: Create a Redis sorted set to store tasks with their priorities, add tasks with specific priorities, retrieve the highest priority task, and remove it from the queue.
📋 What You'll Learn
Create a Redis sorted set named task_queue.
Add three tasks with exact names and priorities to task_queue: task1 with priority 10, task2 with priority 20, and task3 with priority 15.
Retrieve the task with the highest priority (highest score) from task_queue using the correct Redis command.
Remove the highest priority task from task_queue.
💡 Why This Matters
🌍 Real World
Priority queues are used in job scheduling, message processing, and task management systems to ensure important tasks are handled first.
💼 Career
Understanding Redis sorted sets and priority queues is valuable for backend developers, DevOps engineers, and anyone working with real-time data processing.
Progress0 / 4 steps
1
Create the priority queue sorted set
Create a Redis sorted set called task_queue and add these tasks with their priorities: task1 with score 10, task2 with score 20, and task3 with score 15 using the ZADD command.
Redis
Hint

Use ZADD followed by the sorted set name, then pairs of score member.

2
Configure retrieval of highest priority task
Write a Redis command to retrieve the task with the highest priority from task_queue using ZREVRANGE with start and stop indexes to get only the top task.
Redis
Hint

ZREVRANGE returns members ordered from highest to lowest score. Use indexes 0 to 0 to get the top one.

3
Remove the highest priority task
Write a Redis command to remove task2 from task_queue using the ZREM command.
Redis
Hint

Use ZREM followed by the sorted set name and the member to remove.

4
Verify the updated priority queue
Write a Redis command to retrieve all tasks in task_queue ordered from highest to lowest priority using ZREVRANGE with start 0 and stop -1.
Redis
Hint

Use ZREVRANGE with indexes 0 to -1 to get all members from highest to lowest score.

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