Master-replica architecture in Redis - Time & Space Complexity
When using Redis master-replica setup, it is important to understand how the time to process commands grows as data or replicas increase.
We want to know how the system handles more data or more replicas in terms of speed.
Analyze the time complexity of replicating data from master to replicas.
# Setup on each replica (once):
REPLICAOF master_host master_port
# Master writes data
SET key value
# Master automatically sends updates to all connected replicas
# Replica receives and applies updates
# This happens continuously as master changes
This code shows a master writing data and replicas copying those changes continuously.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Master sends each write command to all replicas.
- How many times: For each write, the master sends data to every replica.
As the number of replicas grows, the master must send the same data to more places.
| Input Size (n = replicas) | Approx. Operations |
|---|---|
| 1 | 1 send per write |
| 10 | 10 sends per write |
| 100 | 100 sends per write |
Pattern observation: The work grows directly with the number of replicas.
Time Complexity: O(n)
This means the time to replicate data grows linearly as you add more replicas.
[X] Wrong: "Adding more replicas does not affect the master's speed because replicas work independently."
[OK] Correct: The master must send data to each replica, so more replicas mean more work for the master.
Understanding how replication scales helps you design systems that stay fast as they grow. This skill shows you can think about real system limits and plan accordingly.
"What if the master batches updates before sending to replicas? How would the time complexity change?"
Practice
Solution
Step 1: Understand the role of master and replicas
The master server holds the original data, and replicas copy this data to keep backups and improve read speed.Step 2: Identify the main goal of this setup
This setup is mainly for safety (backup) and speed (load distribution).Final Answer:
To copy data from one main server to others for safety and speed -> Option AQuick Check:
Master-replica = data copy for safety and speed [OK]
- Thinking replicas delete data
- Confusing master-replica with encryption
- Believing replicas run unrelated databases
Solution
Step 1: Recall the Redis command for setting a replica
The correct command isSLAVEOFfollowed by the master's IP and port.Step 2: Check the options for exact command syntax
Only SLAVEOF <port> uses the correct commandSLAVEOF.Final Answer:
SLAVEOF <master-ip> <port> -> Option CQuick Check:
Set replica with SLAVEOF command [OK]
- Using REPLICAOF instead of SLAVEOF
- Trying non-existent commands like SETREPLICA
- Confusing COPYTO with replication commands
SLAVEOF 192.168.1.10 6379 GET user:100
What will happen if the master at 192.168.1.10 is down?
Solution
Step 1: Understand replica behavior when master is down
The replica keeps the last synced data even if the master is offline.Step 2: Predict the GET command result on replica
GET will return the last known value for the key from the replica's local data.Final Answer:
The replica will return the last synced value for user:100 -> Option BQuick Check:
Replica serves last synced data if master is down [OK]
- Assuming replica errors out when master is down
- Thinking replica auto-promotes to master
- Believing replica deletes keys on master failure
SLAVEOF NO ONE on a Redis replica server but it still behaves like a replica. What is the likely problem?Solution
Step 1: Understand what SLAVEOF NO ONE does
This command tells the server to stop replicating and become a master.Step 2: Identify why the server still acts as replica
If the server is still connected or replication not stopped properly, it remains a replica.Final Answer:
The server is still connected to the master and did not switch roles -> Option AQuick Check:
Server must disconnect from master to become master [OK]
- Typing SLAVE OF instead of SLAVEOF
- Thinking restart is always needed
- Believing SLAVEOF NO ONE only works on masters
Solution
Step 1: Identify the goal of continuous operation
To keep Redis working if master fails, replicas must be ready to take over automatically.Step 2: Evaluate options for failover and replication
Set multiple replicas and configure automatic failover to promote a replica to master uses multiple replicas and automatic failover, which is the best practice.Final Answer:
Set multiple replicas and configure automatic failover to promote a replica to master -> Option DQuick Check:
Multiple replicas + auto failover = high availability [OK]
- Relying on manual data copy only
- Running multiple masters without replicas
- Disabling replication and trusting backups alone
Ready to prove it?
Pass the test and this pattern moves unknown
