Archicise
Exercise

Design a Distributed Cache

Build a distributed caching system similar to Redis or Memcached that provides high-speed key-value storage across multiple nodes.

Functional Requirements

  • Store and retrieve key-value pairs with sub-millisecond latency
  • Support TTL (time-to-live) for automatic expiration
  • Handle multiple data types (strings, lists, sets, hashes)
  • Support atomic operations (increment, compare-and-swap)
  • Provide pub/sub messaging capabilities

Non-Functional Requirements

  • Horizontal scalability to petabytes of data
  • 99.99% availability
  • Consistent performance under high load
  • Support for 1M+ operations per second per node

Questions to Consider

  • How will you partition data across nodes?
  • What consistency model will you use?
  • How do you handle node failures and rebalancing?
Your Solution

Data Partitioning

Design the sharding strategy for distributing data across nodes. Consider consistent hashing, virtual nodes, and how to handle hot keys.