📖 Scenario: You are managing a Redis database that stores user profile descriptions as strings. Sometimes, you need to read a part of the description or update a small section without replacing the whole string.
🎯 Goal: Build a Redis string value and practice extracting a substring using GETRANGE and updating part of the string using SETRANGE.
📋 What You'll Learn
Create a Redis string key profile:1001 with the exact value "Hello, I am learning Redis commands!".
Define two variables start and end with values 7 and 17 respectively.
Use the GETRANGE command with profile:1001, start, and end to extract the substring.
Use the SETRANGE command to replace the substring starting at position 18 with "fun and easy!".
💡 Why This Matters
🌍 Real World
Redis strings are often used to store user data, logs, or messages where partial updates or reads are needed without fetching or rewriting the entire string.
💼 Career
Understanding GETRANGE and SETRANGE helps in optimizing Redis usage for real-time applications, improving performance by minimizing data transfer and update overhead.
Progress0 / 4 steps
1
DATA SETUP: Create the Redis string key
Create a Redis string key called profile:1001 and set its value exactly to "Hello, I am learning Redis commands!" using the SET command.
Redis
Hint
Use the SET command with the key and the exact string value.
2
CONFIGURATION: Define start and end positions
Define two variables called start and end with values 7 and 17 respectively. Use the SET command with keys start and end to store these values as strings.
Redis
Hint
Use SET start 7 and SET end 17 to store the positions.
3
CORE LOGIC: Extract substring with GETRANGE
Use the GETRANGE command with the key profile:1001 and the variables start and end to extract the substring from position 7 to 17.
Redis
Hint
Use GETRANGE profile:1001 7 17 to get the substring.
4
COMPLETION: Update substring with SETRANGE
Use the SETRANGE command to replace the substring starting at position 18 in profile:1001 with the exact string "fun and easy!".
Redis
Hint
Use SETRANGE profile:1001 18 "fun and easy!" to update the string.
Practice
(1/5)
1. What does the Redis command GETRANGE key 0 4 do?
easy
A. Returns the substring of the value stored at key from index 0 to 4 inclusive.
B. Deletes the first 5 characters of the string stored at key.
C. Replaces the first 5 characters of the string stored at key with zeros.
D. Returns the length of the string stored at key.
Solution
Step 1: Understand GETRANGE parameters
The command GETRANGE key start end returns 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 at key.
Final Answer:
Returns substring from index 0 to 4 inclusive -> Option A
Quick Check:
GETRANGE extracts substring = A [OK]
Hint: GETRANGE extracts substring by start and end indexes [OK]
Common Mistakes:
Thinking GETRANGE deletes or modifies the string
Confusing GETRANGE with SETRANGE
Assuming end index is exclusive
2. Which of the following is the correct syntax to replace part of a string value in Redis using SETRANGE?
easy
A. SETRANGE key value offset
B. SETRANGE key offset value
C. SET key offset value
D. GETRANGE key offset value
Solution
Step 1: Recall SETRANGE syntax
The correct syntax is SETRANGE 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 B
Quick Check:
Correct SETRANGE syntax = A [OK]
Hint: Remember SETRANGE order: key, offset, then value [OK]
Common Mistakes:
Swapping offset and value positions
Using GETRANGE instead of SETRANGE
Using SET instead of SETRANGE
3. Given the Redis string value at key mykey is "HelloWorld", what will be the result of GETRANGE mykey 5 7?
medium
A. "World"
B. "Hello"
C. "loW"
D. "Wor"
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 D
Quick Check:
GETRANGE returns substring = B [OK]
Hint: Count string indexes from 0 to get substring [OK]
Common Mistakes:
Counting indexes starting at 1
Including characters outside the range
Confusing GETRANGE with SETRANGE
4. You run SETRANGE mykey 3 "abc" on a Redis string "abcdef". The result is unexpected. What is the likely mistake?
medium
A. Using quotes around the substring value in the command.
B. Offset 3 is out of range for the string length.
C. SETRANGE cannot modify existing strings.
D. The key mykey does not exist.
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 A
Quick Check:
Quotes in SETRANGE value cause errors = C [OK]
Hint: Do not include quotes around substring in SETRANGE [OK]
Common Mistakes:
Including quotes around substring value
Assuming offset must be within string length
Thinking SETRANGE creates new keys automatically
5. If the Redis key text holds the string "abcdefghij", what will be the final string after executing SETRANGE text 5 "XYZ" followed by GETRANGE text 3 7?
hard
A. "defgh"
B. "fghij"
C. "deXYZ"
D. "defXY"
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 C
Quick Check:
SETRANGE modifies substring, GETRANGE extracts it = D [OK]
Hint: Apply SETRANGE first, then GETRANGE on updated string [OK]
Common Mistakes:
Not updating string before GETRANGE
Miscounting offset positions
Assuming GETRANGE returns original string
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.