What if you could fix or read just a tiny part of your data instantly, without touching the rest?
Why GETRANGE and SETRANGE in Redis? - Purpose & Use Cases
Imagine you have a long text saved in a file or a note, and you want to read or change just a small part of it without opening or rewriting the whole thing.
Manually opening the entire file or string, reading it all, then rewriting it just to change a few characters is slow and can cause mistakes. It wastes time and can break the data if done wrong.
GETRANGE and SETRANGE let you quickly read or update only the part you want inside a stored string, without touching the rest. This saves time and keeps your data safe.
full_text = redis.get('key') new_text = full_text[:5] + 'hello' + full_text[10:] redis.set('key', new_text)
redis.setrange('key', 5, 'hello') partial_text = redis.getrange('key', 5, 9)
You can efficiently access or update parts of stored strings instantly, making your app faster and more reliable.
Think of a chat app where you want to update just a word in a saved message or read a snippet without loading the entire conversation.
Manual string edits are slow and risky.
GETRANGE and SETRANGE target only needed parts.
This makes data handling faster and safer.
Practice
GETRANGE key 0 4 do?Solution
Step 1: Understand GETRANGE parameters
The commandGETRANGE key start endreturns the substring from the start index to the end index inclusive.Step 2: Apply to given indices
With start=0 and end=4, it returns characters at positions 0,1,2,3,4 from the string stored atkey.Final Answer:
Returns substring from index 0 to 4 inclusive -> Option AQuick Check:
GETRANGE extracts substring = A [OK]
- Thinking GETRANGE deletes or modifies the string
- Confusing GETRANGE with SETRANGE
- Assuming end index is exclusive
Solution
Step 1: Recall SETRANGE syntax
The correct syntax isSETRANGE key offset value, where offset is the start position to replace and value is the new substring.Step 2: Check options
Only SETRANGE key offset value matches this syntax exactly.Final Answer:
SETRANGE key offset value -> Option BQuick Check:
Correct SETRANGE syntax = A [OK]
- Swapping offset and value positions
- Using GETRANGE instead of SETRANGE
- Using SET instead of SETRANGE
mykey is "HelloWorld", what will be the result of GETRANGE mykey 5 7?Solution
Step 1: Identify substring indices
The string is "HelloWorld" with indices: H(0), e(1), l(2), l(3), o(4), W(5), o(6), r(7), l(8), d(9).Step 2: Extract substring from index 5 to 7
Characters at 5,6,7 are 'W', 'o', 'r', so the substring is "Wor".Final Answer:
"Wor" -> Option DQuick Check:
GETRANGE returns substring = B [OK]
- Counting indexes starting at 1
- Including characters outside the range
- Confusing GETRANGE with SETRANGE
SETRANGE mykey 3 "abc" on a Redis string "abcdef". The result is unexpected. What is the likely mistake?Solution
Step 1: Understand SETRANGE usage
SETRANGE expects the substring value without quotes; quotes are interpreted literally.Step 2: Identify the mistake
Using quotes like "abc" inserts the quotes as characters, causing unexpected results.Final Answer:
Using quotes around substring causes wrong replacement -> Option AQuick Check:
Quotes in SETRANGE value cause errors = C [OK]
- Including quotes around substring value
- Assuming offset must be within string length
- Thinking SETRANGE creates new keys automatically
text holds the string "abcdefghij", what will be the final string after executing SETRANGE text 5 "XYZ" followed by GETRANGE text 3 7?Solution
Step 1: Apply SETRANGE at offset 5
Original string: "abcdefghij". SETRANGE replaces characters at positions 5,6,7 with "XYZ". Positions: a(0), b(1), c(2), d(3), e(4), f(5), g(6), h(7), i(8), j(9). After replacement: "abcdeXYZij".Step 2: Apply GETRANGE from 3 to 7
Characters at positions 3 to 7 are: d(3), e(4), X(5), Y(6), Z(7). So substring is "deXYZ".Final Answer:
"deXYZ" -> Option CQuick Check:
SETRANGE modifies substring, GETRANGE extracts it = D [OK]
- Not updating string before GETRANGE
- Miscounting offset positions
- Assuming GETRANGE returns original string
Ready to prove it?
Pass the test and this pattern moves unknown
