Senior LevelSoftware Engineering Principles
How does the Redlock Algorithm manage distributed locks across multiple independent Redis nodes?
❓ Interview Prompt: Explain Distributed Locking, Redlock algorithm, multi-node Redis quorums, clock drift risks, TTL expirations, and Martin Kleppmann's critique.
The Redlock Algorithm acquires distributed locks across $N$ (typically 5) independent, un-replicated Redis master nodes:
How Redlock Works:
1
Gets current timestamp $T_1$.
2
Attempts to acquire lock sequentially on all 5 Redis nodes with a short timeout.
3
If lock is acquired on a majority quorum ($\ge 3$ nodes) and total time elapsed $T_2 - T_1 < \text{Lock TTL}$, the lock is granted!
•
Critique (Martin Kleppmann): System clock jumps or long GC pauses can cause lock TTL expiration while execution continues, risking race conditions. Use fencing tokens ('fencing_id') to validate lock ownership on storage resources!
Code Implementation Example
typescript
import Redlock from 'redlock';
import { redis1, redis2, redis3 } from './redis-nodes';
const redlock = new Redlock([redis1, redis2, redis3], {
driftFactor: 0.01,
retryCount: 3
});
const lock = await redlock.acquire(['resource:account:100'], 5000);
try {
// Critical section protected by Redlock
} finally {
await lock.release();
}💡Acquiring a distributed lock using the Redlock algorithm.
🎯 Interview Key Takeaway
Use Redlock with fencing tokens to coordinate distributed locks across independent Redis master nodes safely.
#Redlock#Distributed Locks#Redis#Senior
Back to all Software Engineering Principles Questions→