Synchronization process in Redis - Time & Space Complexity
When Redis synchronizes data between a master and a replica, it copies data to keep them the same.
We want to know how the time needed grows as the data size grows.
Analyze the time complexity of the following Redis synchronization commands.
SYNC
# Master sends full dataset to replica
# Replica receives and loads data
This process copies all data from the master to the replica to keep them synchronized.
Look for repeated actions in the synchronization.
- Primary operation: Sending each data item from master to replica.
- How many times: Once for every item stored in the database.
As the number of data items grows, the time to send all data grows too.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 data sends |
| 100 | 100 data sends |
| 1000 | 1000 data sends |
Pattern observation: The time grows directly with the number of data items.
Time Complexity: O(n)
This means the time to synchronize grows in direct proportion to the amount of data.
[X] Wrong: "Synchronization time stays the same no matter how much data there is."
[OK] Correct: Because every data item must be sent, more data means more time.
Understanding how synchronization time grows helps you explain system behavior clearly and shows you can think about real-world data handling.
"What if Redis used incremental synchronization instead of full sync? How would the time complexity change?"
Practice
Solution
Step 1: Understand synchronization goal
Synchronization in Redis ensures that the replica has the same data as the master.Step 2: Compare options with synchronization purpose
Only To keep data the same between master and replica matches the goal of keeping data consistent between master and replica.Final Answer:
To keep data the same between master and replica -> Option AQuick Check:
Synchronization = Data consistency [OK]
- Thinking synchronization deletes data
- Confusing synchronization with backup
- Assuming synchronization speeds up queries
Solution
Step 1: Identify command for full sync
The SYNC command copies all data from master to replica for full synchronization.Step 2: Differentiate from other commands
REPLCONF is for replication config, PSYNC is partial sync, SAVE is for persistence, so SYNC is correct.Final Answer:
SYNC -> Option BQuick Check:
Full sync command = SYNC [OK]
- Confusing PSYNC with full sync
- Using SAVE instead of SYNC
- Thinking REPLCONF triggers data copy
Solution
Step 1: Understand SYNC command effect
When replica sends SYNC, master sends all its data to replica to copy.Step 2: Check other options for correctness
Replica does not delete data first, master does not stop writes, and replica does not become master here.Final Answer:
The master sends all its data to the replica -> Option DQuick Check:
SYNC triggers full data send from master [OK]
- Thinking replica deletes data before sync
- Assuming master stops writes during sync
- Confusing roles of master and replica
Solution
Step 1: Analyze synchronization failure reasons
Network problems can block data transfer, causing sync to never complete.Step 2: Evaluate other options
SYNC command is fixed in Redis protocol, master always sends data if present, version mismatch usually causes errors but not infinite sync.Final Answer:
Network issues prevent data transfer -> Option CQuick Check:
Network problems block sync completion [OK]
- Assuming command spelling causes sync failure
- Ignoring network connectivity
- Blaming version mismatch without error logs
Solution
Step 1: Understand reconnection sync in Redis
Redis tries partial resynchronization (PSYNC) to send only missing data after failure.Step 2: Compare with other options
Full SYNC is fallback if PSYNC fails, ignoring missed commands causes inconsistency, manual copy is not needed.Final Answer:
It performs a partial resynchronization using PSYNC if possible -> Option AQuick Check:
Partial sync (PSYNC) handles reconnection efficiently [OK]
- Thinking full SYNC always runs after reconnect
- Ignoring partial sync optimization
- Assuming manual copy is required
Ready to prove it?
Pass the test and this pattern moves unknown
