What if you could instantly find any event in a huge timeline without searching forever?
Why XRANGE and XREVRANGE in Redis? - Purpose & Use Cases
Imagine you have a long list of events happening every second, like messages in a chat or sensor readings, and you want to find all events between two specific times.
Manually scanning through all events one by one to find those in a time range is slow and tiring. It's easy to miss some or get the order wrong, especially when the list is huge.
XRANGE and XREVRANGE commands let you quickly and easily get all events between two times, forward or backward, without scanning everything manually.
Get all events; then filter by time in your app code.XRANGE mystream start end
It makes fetching time-based data fast and simple, unlocking real-time insights and smooth user experiences.
In a chat app, you can load messages sent between 2 PM and 3 PM instantly, or scroll backward to see earlier messages without delay.
Manually filtering time-based data is slow and error-prone.
XRANGE and XREVRANGE fetch data between times efficiently.
This helps build fast, responsive apps with time-ordered data.
Practice
XRANGE do when used on a stream?Solution
Step 1: Understand XRANGE purpose
XRANGE is used to read entries from a Redis stream in order from the oldest to the newest.Step 2: Compare with other commands
XREVRANGE reads in reverse order, and other commands like XADD add entries, so XRANGE is for reading oldest to newest.Final Answer:
Reads stream entries from oldest to newest within a specified range. -> Option DQuick Check:
XRANGE = oldest to newest read [OK]
- Confusing XRANGE with XREVRANGE order
- Thinking XRANGE adds or deletes entries
- Assuming XRANGE reads newest first
XREVRANGE?Solution
Step 1: Understand XREVRANGE syntax
XREVRANGE reads from the newest entry (+) to the oldest (-). To get last 5 entries, use range '+' to '-' with COUNT 5.Step 2: Check options
XREVRANGE mystream + - COUNT 5 uses correct order '+' to '-' and COUNT 5. XREVRANGE mystream - + COUNT 5 reverses range, XRANGE mystream + - COUNT 5 uses XRANGE, and XREVRANGE mystream 0 - COUNT 5 uses invalid start ID.Final Answer:
XREVRANGE mystream + - COUNT 5 -> Option BQuick Check:
XREVRANGE newest to oldest with COUNT [OK]
- Swapping '+' and '-' in range
- Using XRANGE instead of XREVRANGE
- Incorrect start or end IDs
mystream with entries:1609459200000-0: {"name":"Alice"}1609459260000-0: {"name":"Bob"}1609459320000-0: {"name":"Carol"}What will be the result of
XRANGE mystream 1609459200000-0 1609459260000-0?Solution
Step 1: Understand XRANGE with ID range
XRANGE returns entries from start ID to end ID in order from oldest to newest.Step 2: Identify matching entries
Entries with IDs 1609459200000-0 and 1609459260000-0 fall within the range, so both are returned in order.Final Answer:
[["1609459200000-0", {"name":"Alice"}], ["1609459260000-0", {"name":"Bob"}]] -> Option CQuick Check:
XRANGE returns oldest to newest in range [OK]
- Expecting reverse order output
- Including entries outside the range
- Confusing XRANGE with XREVRANGE
XREVRANGE mystream - + COUNT 3 on a stream with more than 3 entries but get an empty list. What is the likely cause?Solution
Step 1: Check XREVRANGE range order
XREVRANGE reads from newest to oldest, so the start ID must be '+' and end ID '-'. Using '-' then '+' reverses the order and results in an empty list.Step 2: Verify other options
COUNT is valid with XREVRANGE, a missing key returns empty list (but stream exists with >3 entries), and special IDs like -/+ are valid.Final Answer:
The range start and end IDs are reversed; XREVRANGE expects '+' then '-'. -> Option AQuick Check:
XREVRANGE range must be '+' to '-' [OK]
- Swapping start and end IDs in XREVRANGE
- Assuming COUNT is invalid
- Confusing the empty result with missing key
mystream but only those with IDs greater than 1609459200000-0. Which command achieves this correctly?Solution
Step 1: Understand the requirement
We want the 3 newest entries with IDs greater than 1609459200000-0, so we read backwards from newest (+) down to that ID.Step 2: Choose correct command and range
XREVRANGE reads newest to oldest, so range '+' to '1609459200000-0' with COUNT 3 gets newest entries above that ID.Step 3: Eliminate wrong options
XRANGE reads oldest to newest, so XRANGE mystream 1609459200000-0 + COUNT 3 and D read forward. XREVRANGE mystream 1609459200000-0 + COUNT 3 reverses range order for XREVRANGE, causing error.Final Answer:
XREVRANGE mystream + 1609459200000-0 COUNT 3 -> Option AQuick Check:
Newest entries above ID = XREVRANGE + to ID [OK]
- Using XRANGE instead of XREVRANGE for newest entries
- Reversing range IDs in XREVRANGE
- Omitting COUNT to limit results
Ready to prove it?
Pass the test and this pattern moves unknown
