Explain consistent hashing.
01
01
Understand the problem
consistent-hashing
02
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Stuck? AI Nudge Available
Get a conceptual hint to guide your logic without spoiling the final implementation.
03
03
Study the solution
The solution is waiting
Give it an honest attempt first — then compare your thinking with the full walkthrough.
04
04
Read the code
Hash ring with virtual nodes
Run Playgroundimport hashlib, bisect
class HashRing:
def __init__(self, nodes, vnodes=100):
self.vnodes = vnodes
self.ring = {} # point_hash -> node
self.points = [] # sorted hashes
for n in nodes:
self.add(n)
def _h(self, key):
return int(hashlib.md5(key.encode()).hexdigest(), 16)
def add(self, node):
for i in range(self.vnodes):
h = self._h(node + "#" + str(i))
self.ring[h] = node
bisect.insort(self.points, h)
def get(self, key):
if not self.ring:
return None
h = self._h(key)
i = bisect.bisect(self.points, h) % len(self.points) # next clockwise
return self.ring[self.points[i]]
ring = HashRing(["A", "B", "C", "D"])
for k in ["user:1", "user:2", "cart:9", "img:42"]:
print(k, "->", ring.get(k))05
05
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.